[Java源碼][并發(fā)J.U.C]---解析線程池運(yùn)行原理(1)

前言

在開發(fā)過程中,合理地使用線程池能夠帶來3個好處.
1. 降低資源消耗. 通過重復(fù)利用已創(chuàng)建的線程降低線程創(chuàng)建和銷毀造成的消耗.
2. 提高響應(yīng)速度. 當(dāng)任務(wù)到達(dá)時,任務(wù)可以不需要等到線程創(chuàng)建就能立即執(zhí)行.
3. 提高線程的可管理性. 線程是稀缺資源,如果無限制地創(chuàng)建,不僅會消耗系統(tǒng)資源,還會降低系統(tǒng)的穩(wěn)定性,使用線程池可以進(jìn)行統(tǒng)一分配 調(diào)優(yōu)和監(jiān)控.

本文源碼: 源碼下載

線程池的實(shí)現(xiàn)原理

ThreadPoolExecutor中的執(zhí)行流程

線程池流程.png

1. 線程池判斷核心線程池里的線程是否都在執(zhí)行任務(wù). 如果不是,則創(chuàng)建一個新的工作線程來執(zhí)行任務(wù). 如果核心線程池里的線程都在執(zhí)行任務(wù),則進(jìn)入下個流程.
2. 線程池判斷工作隊列是否已經(jīng)滿. 如果工作隊列沒有滿,則將新提交的任務(wù)存儲在這個工作隊列里. 如果工作隊列滿了,則進(jìn)入下個流程.
3. 線程池判斷線程池的線程是否都處于工作狀態(tài)魔熏。如果沒有三圆,則創(chuàng)建一個新的工作線程來執(zhí)行任務(wù). 如果已經(jīng)滿了,則交給飽和策略來處理這個任務(wù).

圖片.png

1. 如果當(dāng)前運(yùn)行的線程少于corePoolSize,則創(chuàng)建新線程來執(zhí)行任務(wù).
2. 如果運(yùn)行的線程等于或多于corePoolSize,則將任務(wù)加入BlockingQueue.
3. 如果無法將任務(wù)加入BlockingQueue(隊列已滿), 則創(chuàng)建新的線程來處理任務(wù).
4. 如果創(chuàng)建新線程將使當(dāng)前運(yùn)行的線程超maximumPoolSize,任務(wù)將被拒絕,并調(diào)用RejectedExecutionHandler.rejectedExecution()方法.

參考

1. Java 1.8源碼
2. Java并發(fā)編程的藝術(shù)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末污呼,一起剝皮案震驚了整個濱河市裕坊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌燕酷,老刑警劉巖籍凝,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異苗缩,居然都是意外死亡饵蒂,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進(jìn)店門酱讶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來退盯,“玉大人,你說我怎么就攤上這事〉梦剩” “怎么了囤攀?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長宫纬。 經(jīng)常有香客問我焚挠,道長,這世上最難降的妖魔是什么漓骚? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任蝌衔,我火速辦了婚禮,結(jié)果婚禮上蝌蹂,老公的妹妹穿的比我還像新娘噩斟。我一直安慰自己,他們只是感情好孤个,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布剃允。 她就那樣靜靜地躺著,像睡著了一般齐鲤。 火紅的嫁衣襯著肌膚如雪斥废。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天给郊,我揣著相機(jī)與錄音牡肉,去河邊找鬼。 笑死淆九,一個胖子當(dāng)著我的面吹牛统锤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播炭庙,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼饲窿,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了焕蹄?” 一聲冷哼從身側(cè)響起逾雄,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎擦盾,沒想到半個月后嘲驾,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡迹卢,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年辽故,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片腐碱。...
    茶點(diǎn)故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡誊垢,死狀恐怖掉弛,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情喂走,我是刑警寧澤殃饿,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站芋肠,受9級特大地震影響乎芳,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜帖池,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一奈惑、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧睡汹,春花似錦肴甸、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至彤叉,卻和暖如春庶柿,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背姆坚。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工澳泵, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留实愚,地道東北人兼呵。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像腊敲,于是被迫代替她去往敵國和親击喂。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 原文出處http://cmsblogs.com/ 『chenssy』 作為Executor框架中最核心的類碰辅,Thr...
    踩在浪花上看浪閱讀 1,221評論 0 4
  • 第一部分 來看一下線程池的框架圖没宾,如下: 1凌彬、Executor任務(wù)提交接口與Executors工具類 Execut...
    壓抑的內(nèi)心閱讀 4,247評論 1 24
  • 為什么使用線程池 當(dāng)我們在使用線程時,如果每次需要一個線程時都去創(chuàng)建一個線程循衰,這樣實(shí)現(xiàn)起來很簡單铲敛,但是會有一個問題...
    閩越布衣閱讀 4,278評論 10 45
  • 作業(yè)沒做完,爸爸沒簽字会钝,就睡覺了伐蒋,早起一看,蒙圈。 下雪了先鱼,暖氣費(fèi)還沒交俭正,先解決。 挺生氣焙畔,咋么辦掸读?今天,今天我自...
    elephon閱讀 103評論 0 0
  • 時光無形 宏多,但存在著寺枉。人類出于生活需要,創(chuàng)造了各種計時法绷落,直到今天的時鐘與電子計時姥闪,有序地隔成年月日與時分秒。實(shí)際...
    香山紅葉108閱讀 865評論 0 3