成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如果我一直往線程池里面放任務(wù),會發(fā)生什么?

開發(fā) 前端
面試的時候最常問的就是線程池的各種參數(shù)的含義,和線程池的整個運行流程,這個一定要會。

 [[342356]]

線程池的各種參數(shù)

面試的時候最常問的就是線程池的各種參數(shù)的含義,和線程池的整個運行流程,這個一定要會

ThreadPoolExecutor一共有4個構(gòu)造函數(shù),但最后調(diào)用的都是如下構(gòu)造函數(shù)

參數(shù) 含義
corePoolSize 核心線程池大小
maximumPoolSize 線程池最大容量大小
keepAliveTime 線程池空閑時,線程存活的時間
TimeUnit 線程活動保持時間的單位
BlockingQueue<Runnable> 任務(wù)隊列,用于保存等待執(zhí)行的任務(wù)的阻塞隊列
ThreadFactory 用于設(shè)置線程的工廠
RejectedExecutionHandler 飽和策略

來類比學(xué)習(xí)一下這些參數(shù),我們把線程池類比為項目組,線程是這個公司的成員

corePoolSize:線程池中最少的線程數(shù),一個項目組總得有corePoolSize人堅守陣地,都是簽訂勞動合同了,不能隨便撤。

maximumPoolSize:當(dāng)項目很忙時,就得加人,請其他項目組的人來幫忙。但是公司空間有限,最多只能加到maximumPoolSize個人。當(dāng)項目閑了,就得撤人了,最多能撤到corePoolSize個人

keepAliveTime & unit:上面提到項目根據(jù)忙閑來增減人員,那在編程世界里,如何定義忙和閑呢?如果一個線程在keepAliveTime(時間數(shù)字)* unit(時間單位)時間內(nèi)都沒有執(zhí)行任務(wù),說明這個線程很閑。如果此時線程數(shù)大于corePoolSize,這個線程就要被回收了

workQueue:就是任務(wù)隊列

threadFactory:自定義如果創(chuàng)建線程,例如給線程指定一個有意義的名字

handler:workQueue滿了(排期滿了),再提交任務(wù),該怎么處理呢?這個就是處理策略,線程池提供了4種策略,你也可以實現(xiàn)RejectedExecutionHandler接口來自定義策略

策略
AbortPolicy 丟棄任務(wù),拋運行時異常(默認(rèn)的處理策略)
CallerRunsPolicy 執(zhí)行任務(wù)
DiscardPolicy 忽視,什么都不會發(fā)生
DiscardOldestPolicy 丟棄隊列里最近的一個任務(wù),并執(zhí)行當(dāng)前任務(wù)

線程池的工作流程

可以參照一下源碼理解一下下面的流程

1.線程池剛創(chuàng)建時,里面沒有一個線程。任務(wù)隊列是作為參數(shù)傳進(jìn)來的。不過,就算隊列里面有任務(wù),線程池也不會馬上執(zhí)行他們。

2.當(dāng)調(diào)用execute()方法添加一個任務(wù)時,線程池會做如下判斷:

a. 如果正在運行的線程數(shù)量小于corePoolSize,那么馬上創(chuàng)建線程運行這個任務(wù)

b. 如果正在運行的線程數(shù)量大于或等于corePoolSize,那么將這個任務(wù)放入隊列

c. 如果這時候隊列滿了,而且正在運行的線程數(shù)量小于maximunPoolSize,那么還是要創(chuàng)建非核心線程立刻運行這個任務(wù)

d. 如果隊列滿了,而且正在運行的線程數(shù)量大于或等于maximunPoolSize,那么線程池會拋出RejectedExecutionException

3.當(dāng)一個線程完成任務(wù)時,它會從隊列中取下一個任務(wù)來執(zhí)行

4.當(dāng)一個線程無事可做,超過一定的時間(keepAliveTime)時,線程池會判斷,如果當(dāng)前運行的線程數(shù)大于corePoolSize,那么這個線程就被停掉。所以線程池的所有任務(wù)完成后,它最終會收縮到corePoolSize的大小

可以用如下圖來表示整體流程

本文轉(zhuǎn)載自微信公眾號「 Java識堂」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系 Java識堂公眾號。

 

 

責(zé)任編輯:武曉燕 來源: Java識堂
相關(guān)推薦

2022-08-16 13:41:24

穩(wěn)定幣加密世界攻擊

2023-05-15 10:27:53

人工智能AI

2021-08-19 17:27:41

IT數(shù)據(jù)中心災(zāi)難

2021-12-27 08:24:08

漏洞網(wǎng)絡(luò)安全

2021-12-08 12:05:21

MySQ磁盤數(shù)據(jù)庫

2023-08-26 07:44:13

系統(tǒng)內(nèi)存虛擬

2022-05-23 14:57:36

加密貨幣比特幣投資

2020-06-08 15:15:26

程序員擺地攤技術(shù)

2020-05-11 08:36:21

程序員工作生活

2016-04-08 15:13:29

人工智能阿里小Ai

2015-09-25 10:41:48

r語言

2021-03-10 10:40:04

Redis命令Linux

2023-06-27 16:53:50

2015-11-19 00:11:12

2016-01-04 11:03:00

2015-04-16 10:40:29

2024-01-18 11:50:28

2023-04-27 07:40:08

Spring框架OpenAI

2020-12-10 07:37:42

HashMap數(shù)據(jù)覆蓋

2019-02-27 10:18:26

重置Windows 10Windows
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 一级一级一级毛片 | 91精品国产综合久久香蕉922 | 欧美日韩亚 | 日韩国产精品一区二区三区 | 国产高清在线精品 | 欧美日韩中 | 国产伦一区二区三区 | 一区二区日韩 | 中文字幕视频在线 | av一级毛片 | 精品99久久| 亚洲三区在线观看 | 亚洲精品资源 | 国产精品69毛片高清亚洲 | 91国在线高清视频 | 在线视频91| 一区二区三区在线 | 久久久精彩视频 | 日韩午夜在线播放 | 成人免费av| 欧美视频免费在线观看 | 国产免费一区二区三区 | 亚洲福利一区二区 | 成人av在线播放 | 日韩欧美不卡 | 天天插天天操 | 免费的av网站 | 国产乱码精品一品二品 | 日本免费网 | 色婷婷av一区二区三区软件 | 欧美国产精品一区二区 | 日韩欧美国产精品 | 久久午夜精品福利一区二区 | 国产成人精品一区二区三区视频 | 中文字幕日韩一区 | 久久久久久久香蕉 | 亚洲成人精品影院 | 亚洲第一成年免费网站 | 在线毛片网| 日韩欧美在线观看 | av在线免费观看不卡 |