concurrent包下線程池類小結(jié)

并發(fā)包下的線程池技術(shù)雖然常用,但是知識點較多易忘。所以轧粟,參考網(wǎng)絡資源做了一個小結(jié),便于復習脓魏。

1.Executor接口
用于執(zhí)行已提交的Runnable任務逃延。

Paste_Image.png

2.ExecutorService接口
繼承自Executor接口。

Paste_Image.png

3.ScheduledExecutorService接口
繼承自ExecutorService接口轧拄,在給定的延遲后執(zhí)行任務或定時執(zhí)行任務,類圖如下讽膏。

Paste_Image.png
Paste_Image.png

4.RejectedExecutionHandler接口
當Executor已經(jīng)關(guān)閉或任務隊列已經(jīng)飽和時檩电,提交新任務時,Executor對應的處理策略府树。

Paste_Image.png

5.RejectedExecutionHandler接口實現(xiàn)類
RejectedExecutionHandler接口4個實現(xiàn)類對應4種處理策略:

Paste_Image.png

6.BlockingQueue接口
BlockingQueue接口定義任務隊列俐末。

Paste_Image.png

7.ArrayBlockingQueue類
實現(xiàn)了BlockingQueue接口。一個由數(shù)組支持的有界阻塞隊列奄侠。此隊列按 FIFO(先進先出)原則對元素進行排序卓箫。隊列的頭部是在隊列中存在時間最長的元素。隊列的尾部是在隊列中存在時間最短的元素垄潮。新元素插入到隊列的尾部烹卒,隊列獲取操作則是從隊列頭部開始獲得元素。類圖如下圖所示弯洗。

Paste_Image.png
Paste_Image.png
Paste_Image.png

8.Executors類
為ExecutorService旅急、ScheduledExecutorService、ThreadFactory和Callable提供了便捷的工廠方法牡整。
此類支持以下各種方法:

* 創(chuàng)建并返回設置有常用配置字符串的 ExecutorService 的方法藐吮。
* 創(chuàng)建并返回設置有常用配置字符串的 ScheduledExecutorService 的方法。
* 創(chuàng)建并返回“包裝的”ExecutorService 方法,它通過使特定于實現(xiàn)的方法不可訪問來禁用重新配置谣辞。
* 創(chuàng)建并返回 ThreadFactory 的方法迫摔,它可將新創(chuàng)建的線程設置為已知的狀態(tài)。
* 創(chuàng)建并返回非閉包形式的 Callable 的方法泥从,這樣可將其用于需要 Callable 的執(zhí)行方法中句占。
Paste_Image.png

9.ThreadPoolExecutor類
類圖如下圖所示。

Paste_Image.png

ThreadPoolExecutor使用Executors工廠方法Executors.newCachedThreadPool()(無界線程池歉闰,可以進行自動線程回收)辖众、Executors.newFixedThreadPool(int)(固定大小線程池)和 Executors.newSingleThreadExecutor()(單個后臺線程)配置的線程池執(zhí)行每個提交的任務。

Paste_Image.png

使用構(gòu)造方法可以創(chuàng)建一個自定義的線程池和敬。ThreadPoolExecutor將根據(jù)corePoolSize和maximumPoolSize設置的邊界自動調(diào)整池大小凹炸。當新任務在方法execute(java.lang.Runnable) 中提交時,如果運行的線程少于corePoolSize昼弟,則創(chuàng)建新線程來處理請求啤它,即使其他輔助線程是空閑的。如果運行的線程多于corePoolSize而少于 maximumPoolSize舱痘,則僅當隊列滿時才創(chuàng)建新線程变骡。如果設置的corePoolSize和maximumPoolSize相同,則創(chuàng)建了固定大小的線程池芭逝。如果將 maximumPoolSize 設置為基本的無界值(如Integer.MAX_VALUE)塌碌,則允許池適應任意數(shù)量的并發(fā)任務。在大多數(shù)情況下旬盯,核心和最大池大小僅基于構(gòu)造來設置台妆,不過也可以使用setCorePoolSize(int)和 setMaximumPoolSize(int)進行動態(tài)更改。所有BlockingQueue都可用于傳輸和保持提交的任務胖翰〗邮#可以使用此隊列與池大小進行交互:

* 如果運行的線程少于corePoolSize,則Executor始終首選添加新的線程萨咳,而不進行排隊懊缺。
* 如果運行的線程等于或多于corePoolSize,則Executor始終首選將請求加入隊列培他,而不添加新的線程鹃两。
* 如果無法將請求加入隊列,則創(chuàng)建新的線程舀凛,除非創(chuàng)建此線程超出maximumPoolSize怔毛,在這種情況下,任務將被拒絕腾降。

10.ScheduledThreadPoolExecutor類
實現(xiàn)了ScheduledExecutorService接口拣度,在給定的延遲后執(zhí)行任務,或者定時執(zhí)行任務,按照提交的先進先出(FIFO)順序來啟用那些被安排在同一執(zhí)行時間的任務抗果。類圖如下所示筋帖。

Paste_Image.png

雖然此類繼承自ThreadPoolExecutor,但是幾個繼承的調(diào)整方法對此類并無作用冤馏。特別是日麸,因為它作為一個使用corePoolSize 線程和一個無界隊列的固定大小的池,所以調(diào)整maximumPoolSize沒有什么效果逮光。

Paste_Image.png
Paste_Image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末代箭,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子涕刚,更是在濱河造成了極大的恐慌嗡综,老刑警劉巖,帶你破解...
    沈念sama閱讀 223,002評論 6 519
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件杜漠,死亡現(xiàn)場離奇詭異极景,居然都是意外死亡,警方通過查閱死者的電腦和手機驾茴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,357評論 3 400
  • 文/潘曉璐 我一進店門盼樟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人锈至,你說我怎么就攤上這事晨缴。” “怎么了峡捡?”我有些...
    開封第一講書人閱讀 169,787評論 0 365
  • 文/不壞的土叔 我叫張陵喜庞,是天一觀的道長。 經(jīng)常有香客問我棋返,道長,這世上最難降的妖魔是什么雷猪? 我笑而不...
    開封第一講書人閱讀 60,237評論 1 300
  • 正文 為了忘掉前任睛竣,我火速辦了婚禮,結(jié)果婚禮上求摇,老公的妹妹穿的比我還像新娘射沟。我一直安慰自己,他們只是感情好与境,可當我...
    茶點故事閱讀 69,237評論 6 398
  • 文/花漫 我一把揭開白布验夯。 她就那樣靜靜地躺著,像睡著了一般摔刁。 火紅的嫁衣襯著肌膚如雪挥转。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,821評論 1 314
  • 那天,我揣著相機與錄音绑谣,去河邊找鬼党窜。 笑死,一個胖子當著我的面吹牛借宵,可吹牛的內(nèi)容都是我干的幌衣。 我是一名探鬼主播,決...
    沈念sama閱讀 41,236評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼壤玫,長吁一口氣:“原來是場噩夢啊……” “哼豁护!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起欲间,我...
    開封第一講書人閱讀 40,196評論 0 277
  • 序言:老撾萬榮一對情侶失蹤楚里,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后括改,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體腻豌,經(jīng)...
    沈念sama閱讀 46,716評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,794評論 3 343
  • 正文 我和宋清朗相戀三年嘱能,在試婚紗的時候發(fā)現(xiàn)自己被綠了吝梅。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,928評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡惹骂,死狀恐怖苏携,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情对粪,我是刑警寧澤右冻,帶...
    沈念sama閱讀 36,583評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站著拭,受9級特大地震影響纱扭,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜儡遮,卻給世界環(huán)境...
    茶點故事閱讀 42,264評論 3 336
  • 文/蒙蒙 一乳蛾、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧鄙币,春花似錦肃叶、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,755評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至绩衷,卻和暖如春蹦魔,著一層夾襖步出監(jiān)牢的瞬間激率,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,869評論 1 274
  • 我被黑心中介騙來泰國打工版姑, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留柱搜,地道東北人。 一個月前我還...
    沈念sama閱讀 49,378評論 3 379
  • 正文 我出身青樓剥险,卻偏偏與公主長得像聪蘸,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子表制,可洞房花燭夜當晚...
    茶點故事閱讀 45,937評論 2 361

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