国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

10.阻塞隊(duì)列和線程池

這篇具有很好參考價(jià)值的文章主要介紹了10.阻塞隊(duì)列和線程池。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

阻塞隊(duì)列(BlockQueue)

  • 非阻塞方法
    • add 往滿的隊(duì)列中添加元素會(huì)報(bào)錯(cuò)
    • remove 從空的隊(duì)列中移除元素會(huì)報(bào)錯(cuò)
    • offer 往滿的隊(duì)列中添加元素會(huì)返回false
    • poll 從空的隊(duì)列中移除元素會(huì)返回null
  • 阻塞方法
    • put
    • take

使用場(chǎng)景:
阻塞隊(duì)列通常使用在生產(chǎn)者消費(fèi)者設(shè)計(jì)模式當(dāng)中,生產(chǎn)者不用關(guān)心生成的產(chǎn)品由哪個(gè)消費(fèi)者來執(zhí)行,只需將生產(chǎn)的產(chǎn)品放入隊(duì)列中,消費(fèi)者直接從隊(duì)列中取出產(chǎn)品使用,達(dá)到了生產(chǎn)者與消費(fèi)者之間解耦的目的和性能均衡問題.

常用的阻塞隊(duì)列有哪些?

  • ArrayBlockQueue 一個(gè)由數(shù)組結(jié)構(gòu)組成的有界阻塞隊(duì)列
  • LinkedBlockQueue 一個(gè)由鏈表結(jié)構(gòu)組成的有界阻塞隊(duì)列
  • PriorityBlockQueue 一個(gè)支持優(yōu)先級(jí)排序的無界阻塞隊(duì)列
  • DelayQueue 一個(gè)使用優(yōu)先級(jí)排序的無界阻塞隊(duì)列
  • SyschronizedQueue 一個(gè)不存儲(chǔ)元素的阻塞隊(duì)列
  • LinkedTransferQueue 一個(gè)由鏈表結(jié)構(gòu)組成的無界阻塞隊(duì)列
  • LinkedBlockQueue 一個(gè)由鏈表結(jié)構(gòu)組成的雙向阻塞隊(duì)列

什么是線程池?為什么要用線程池?
線程池是用來管理線程的.
因?yàn)榫€程的創(chuàng)建、執(zhí)行和銷毀都是需要耗費(fèi)時(shí)間和資源的,所以通過線程池來避免線程的重復(fù)創(chuàng)建和銷毀

線程池ThreadPoolExecutor(/?ɡ?zekj?t?r/)工作機(jī)制

  1. 線程池的創(chuàng)建 (各個(gè)參數(shù)的含義)
    public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue, ThreadFactory threadFactory, RejectedExecutionHandler handler)

  2. 提交任務(wù)

    • execute(Runnable) 沒有返回值
    • submit(Callable/Runnable) 有返回值,返回Future,最終還是交給execute去執(zhí)行的
  3. 線程池的關(guān)閉

    • showDown 將正在執(zhí)行的線程以外的線程關(guān)閉
    • showDownNow 將正在執(zhí)行的線程和以外的線程都關(guān)閉

線程池中參數(shù)的含義

  • corePoolSize 核心線程數(shù),當(dāng)前可執(zhí)行線程的數(shù)量
  • maximumPoolSize 最大線程數(shù),當(dāng)阻塞隊(duì)列存滿后,將會(huì)創(chuàng)建新的線程來執(zhí)行任務(wù)(執(zhí)行的任務(wù)是當(dāng)前的任務(wù),而非阻塞隊(duì)列中的任務(wù))
  • keepAliveTime 控制空閑線程存活時(shí)間
  • unit 控制空閑線程存活時(shí)間單位(ms、s)
  • workQueue 阻塞隊(duì)列,如果要執(zhí)行的線程數(shù)超過核心線程數(shù),將會(huì)會(huì)放在阻塞隊(duì)列中,阻塞隊(duì)列存滿后,依據(jù)最大線程數(shù)將會(huì)創(chuàng)建新的線程來執(zhí)行任務(wù)
  • threadFactory 對(duì)創(chuàng)建線程做一些調(diào)節(jié)
  • handler 拒絕策略,超出線程池執(zhí)行能力以外的任務(wù)拒絕執(zhí)行,最多可以執(zhí)行1100個(gè)線程,超過的不予執(zhí)行

RejectedExecutionHandler(拒絕策略)文章來源地址http://www.zghlxwxcb.cn/news/detail-442584.html

  • CallerRunsPolicy
  • AbortHandler 通常默認(rèn)的拒絕策略是這一個(gè),直接拋出異常
  • DiscardPolicy
  • DiscardOldestPolicy

到了這里,關(guān)于10.阻塞隊(duì)列和線程池的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Android 并發(fā)編程--阻塞隊(duì)列和線程池

    Android 并發(fā)編程--阻塞隊(duì)列和線程池

    隊(duì)列是一種特殊的線性表,特殊之處在于它只允許在表的前端(front)進(jìn)行刪除操作,而在表的后端(rear)進(jìn)行插入操作,和棧一樣,隊(duì)列是一種操作受限制的線性表。進(jìn)行插入操作的端稱為隊(duì)尾,進(jìn)行刪除操作的端稱為隊(duì)頭。 在隊(duì)列中插入一個(gè)隊(duì)列元素稱為入隊(duì),從隊(duì)列中

    2024年02月13日
    瀏覽(32)
  • 【javaEE】阻塞隊(duì)列、定時(shí)器、線程池

    【javaEE】阻塞隊(duì)列、定時(shí)器、線程池

    目錄 ??一、阻塞隊(duì)列 1.概念 2.生產(chǎn)者消費(fèi)者模型 3.阻塞隊(duì)列的實(shí)現(xiàn) ??二、定時(shí)器 1.引出定時(shí)器 2.定時(shí)器的實(shí)現(xiàn) ??三、線程池 1.引出線程池 2.ThreadPoolExecutor 構(gòu)造方法 3.標(biāo)準(zhǔn)數(shù)據(jù)庫的4種拒絕策略【經(jīng)典面試題】【重點(diǎn)掌握】 4.線程池的實(shí)現(xiàn) ? 1.概念 ?對(duì)于隊(duì)列,首先我們想

    2023年04月21日
    瀏覽(20)
  • 多線程案例 | 單例模式、阻塞隊(duì)列、定時(shí)器、線程池

    多線程案例 | 單例模式、阻塞隊(duì)列、定時(shí)器、線程池

    單例模式 單例模式是 設(shè)計(jì)模式 的一種 什么是設(shè)計(jì)模式? 設(shè)計(jì)模式好比象棋中的 “棋譜”,紅方當(dāng)頭炮,黑方馬來跳,針對(duì)紅方的一些走法,黑方應(yīng)招的時(shí)候有一些固定的套路,按照套路來走局勢(shì)就不會(huì)吃虧,也就發(fā)明了一組\\\"棋譜\\\",稱為設(shè)計(jì)模式 軟件開發(fā)中也有很多常見

    2024年02月15日
    瀏覽(26)
  • 【JavaEE初階】多線程(四)阻塞隊(duì)列 定時(shí)器 線程池

    【JavaEE初階】多線程(四)阻塞隊(duì)列 定時(shí)器 線程池

    概念 阻塞隊(duì)列是一種特殊的隊(duì)列. 也遵守 “ 先進(jìn)先出 ” 的原則. 阻塞隊(duì)列能是一種線程安全的數(shù)據(jù)結(jié)構(gòu), 并且具有以下特性: 當(dāng)隊(duì)列滿的時(shí)候, 繼續(xù)入隊(duì)列就會(huì)阻塞, 直到有其他線程從隊(duì)列中取走元素. 當(dāng)隊(duì)列空的時(shí)候, 繼續(xù)出隊(duì)列也會(huì)阻塞,直到有其他線程往隊(duì)列中插入元素

    2023年04月26日
    瀏覽(19)
  • 深入淺出Java多線程(十三):阻塞隊(duì)列

    大家好,我是你們的老伙計(jì)秀才!今天帶來的是[深入淺出Java多線程]系列的第十三篇內(nèi)容:阻塞隊(duì)列。大家覺得有用請(qǐng)點(diǎn)贊,喜歡請(qǐng)關(guān)注!秀才在此謝過大家了!??! 在多線程編程的世界里,生產(chǎn)者-消費(fèi)者問題是一個(gè)經(jīng)典且頻繁出現(xiàn)的場(chǎng)景。設(shè)想這樣一個(gè)情況:有一群持續(xù)

    2024年03月20日
    瀏覽(28)
  • 【Java】多線程案例(單例模式,阻塞隊(duì)列,定時(shí)器,線程池)

    【Java】多線程案例(單例模式,阻塞隊(duì)列,定時(shí)器,線程池)

    ?? Author: 老九 ?? 個(gè)人博客:老九的CSDN博客 ?? 個(gè)人名言:不可控之事 樂觀面對(duì) ?? 系列專欄: 單例模式是設(shè)計(jì)模式之一。代碼當(dāng)中的某個(gè)類,只能有一個(gè)實(shí)例,不能有多個(gè)。單例模式分為:餓漢模式和懶漢模式 餓漢模式表示很著急,就想吃完飯剩下很多碗,然后一

    2024年02月06日
    瀏覽(51)
  • Java 多線程系列Ⅳ(單例模式+阻塞式隊(duì)列+定時(shí)器+線程池)

    Java 多線程系列Ⅳ(單例模式+阻塞式隊(duì)列+定時(shí)器+線程池)

    設(shè)計(jì)模式就是軟件開發(fā)中的“棋譜”,軟件開發(fā)中也有很多常見的 “問題場(chǎng)景”。針對(duì)這些問題場(chǎng)景,大佬們總結(jié)出了一些固定的套路。按照這些套路來實(shí)現(xiàn)代碼可能不會(huì)很好,但至少不會(huì)很差。當(dāng)前階段我們需要掌握兩種設(shè)計(jì)模式: (1)單例模式 (2)工廠模式 概念/特征

    2024年02月09日
    瀏覽(25)
  • 多線程(初階七:阻塞隊(duì)列和生產(chǎn)者消費(fèi)者模型)

    多線程(初階七:阻塞隊(duì)列和生產(chǎn)者消費(fèi)者模型)

    目錄 一、阻塞隊(duì)列的簡(jiǎn)單介紹 二、生產(chǎn)者消費(fèi)者模型 1、舉個(gè)栗子: 2、引入生產(chǎn)者消費(fèi)者模型的意義: (1)解耦合 (2)削峰填谷 三、模擬實(shí)現(xiàn)阻塞隊(duì)列 1、阻塞隊(duì)列的簡(jiǎn)單介紹 2、實(shí)現(xiàn)阻塞隊(duì)列 (1)實(shí)現(xiàn)普通隊(duì)列 (2)加上線程安全 (3)加上阻塞功能 3、運(yùn)用阻塞隊(duì)列

    2024年02月05日
    瀏覽(20)
  • 【Linux】生產(chǎn)者消費(fèi)者模型:基于阻塞隊(duì)列和環(huán)形隊(duì)列 | 單例模式線程池

    【Linux】生產(chǎn)者消費(fèi)者模型:基于阻塞隊(duì)列和環(huán)形隊(duì)列 | 單例模式線程池

    死鎖是指在一組進(jìn)程中的各個(gè)進(jìn)程均占有不會(huì)釋放的資源,但因互相申請(qǐng)被其他進(jìn)程所站用不會(huì)釋放的資源而處于的一種永久等待狀態(tài)。 當(dāng)多線程并發(fā)執(zhí)行并都需要訪問臨界資源時(shí),因?yàn)槊總€(gè)線程都是不同的執(zhí)行流,這就有可能 導(dǎo)致數(shù)據(jù)不一致問題 ,為了避免此問題的發(fā)生

    2024年01月24日
    瀏覽(25)
  • 多線程學(xué)習(xí)之生產(chǎn)者和消費(fèi)者與阻塞隊(duì)列的關(guān)系

    多線程學(xué)習(xí)之生產(chǎn)者和消費(fèi)者與阻塞隊(duì)列的關(guān)系

    生產(chǎn)者消費(fèi)者問題,實(shí)際上主要是包含了兩類線程: 生產(chǎn)者線程用于生產(chǎn)數(shù)據(jù) 消費(fèi)者線程用于消費(fèi)數(shù)據(jù) 生產(chǎn)者和消費(fèi)者之間通常會(huì)采用一個(gè)共享的數(shù)據(jù)區(qū)域,這樣就可以將生產(chǎn)者和消費(fèi)者進(jìn)行解耦, 兩者都不需要互相關(guān)注對(duì)方的 Object類的等待和喚醒方法 方法名 說明 void

    2024年02月11日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包