參數(shù)說明
- corePoolSize 核心線程數(shù)仪媒,默認(rèn)線程池為空提交任務(wù)才創(chuàng)建線程住拭,如果當(dāng)前運(yùn) 行的線程數(shù)少于corePoolSize,(空閑狀態(tài)的線程也時(shí)運(yùn)行的線程)則創(chuàng)建新線程來處理任務(wù)惹挟;如果等于或者多于corePoolSize拆魏,則不再創(chuàng)建熟妓,核心線程在未設(shè)置allowCoreThreadTimeOut時(shí)不會被銷毀雪猪,執(zhí)行任務(wù)后會進(jìn)入空閑狀態(tài),
- maximumPoolSize 線程池允許創(chuàng)建的最大線程數(shù)
- keepAliveTime 非核心線程閑置的超時(shí)時(shí)
- TimeUnit keepAliveTime參數(shù)的時(shí)間單
- workQueue 任務(wù)隊(duì)列
- ThreadFactory 線程工廠
- RejectedExecutionHandler 飽和策略起愈。這是當(dāng)任務(wù)隊(duì)列和線程池都滿了時(shí)所采取的應(yīng)對策略
執(zhí)行流程
- 如果線程池中的線程數(shù)未達(dá)到核心線程數(shù)只恨,則創(chuàng)建核心線程處理任務(wù)。
- 如果線程數(shù)大于或者等于核心線程數(shù)抬虽,則將任務(wù)加入任務(wù)隊(duì)列坤次,線程池中的空閑線程會不斷地從 任務(wù)隊(duì)列中取出任務(wù)進(jìn)行處理。
- 如果任務(wù)隊(duì)列滿了斥赋,并且線程數(shù)沒有達(dá)到最大線程數(shù)缰猴,則創(chuàng)建非核心線程去處理任務(wù)。
- 如果線程數(shù)超過了最大線程數(shù)疤剑,則執(zhí)行飽和策略滑绒。
飽和政策
- AbordPolicy,表示無法處理新任務(wù)隘膘,并拋出RejectedExecutionException異常疑故。此外還有3種策略,它們分 別如下弯菊。
- CallerRunsPolicy:用調(diào)用者所在的線程來處理任務(wù)纵势。此策略提供簡單的反饋控制機(jī)制,能夠減緩 新任務(wù)的提交速度管钳。
- DiscardPolicy:不能執(zhí)行的任務(wù)钦铁,并將該任務(wù)刪除。
- DiscardOldestPolicy:丟棄隊(duì)列最近的任務(wù)才漆,并執(zhí)行當(dāng)前的任務(wù)牛曹。