1. 程式人生 > 實用技巧 >JDK 中執行緒池ThreadPoolExecutor的使用

JDK 中執行緒池ThreadPoolExecutor的使用

JDK 中執行緒池ThreadPoolExecutor的使用

JDK 中執行緒池的使用

JDK 中提供的最核心的執行緒池工具類 ThreadPoolExecutor,在 JDK 1.8 中這個類最複雜的構造方法有 7 個引數。

在這裡插入圖片描述corePoolSize:執行緒池保有的最小執行緒數。

maximumPoolSize:執行緒池建立的最大執行緒數。

keepAliveTime:上面提到專案根據忙閒來增減人員,那在程式設計世界裡,如何定義忙和閒呢?很簡單,一個執行緒如果在一段時間內,都沒有執行任務,說明很閒,keepAliveTime 和 unit 就是用來定義這個“一段時間”的引數。也就是說,如果一個執行緒空閒了keepAliveTime & unit這麼久,而且執行緒池的執行緒數大於 corePoolSize ,那麼這個空閒的執行緒就要被回收了。

unit:keepAliveTime 的時間單位
workQueue:任務佇列
threadFactory:執行緒工廠物件,可以自定義如何建立執行緒,如給執行緒指定name。
handler:自定義任務的拒絕策略。執行緒池中所有執行緒都在忙碌,且任務佇列已滿,執行緒池就會拒絕接收再提交的任務。handler 就是拒絕策略,包括 4 種(即RejectedExecutionHandler 介面的 4個實現類)。
AbortPolicy:預設的拒絕策略,throws RejectedExecutionException
CallerRunsPolicy:提交任務的執行緒自己去執行該任務
DiscardPolicy
:直接丟棄任務,不丟擲任何異常
DiscardOldestPolicy:丟棄最老的任務,加入新的任務