thread pool執行緒池
阿新 • • 發佈:2022-05-29
問題三:執行緒池中的執行緒是怎麼建立的?是一開始就隨著執行緒池的啟動 建立好的嗎?
顯然不是的。執行緒池預設初始化後不啟動 Worker,等待有請求時才啟 動。
每當我們呼叫 execute() 方法新增一個任務時,執行緒池會做如下判 斷:
- 如果正在執行的執行緒數量小於 corePoolSize,那麼馬上建立執行緒執行 這個任務;
- 如果正在執行的執行緒數量大於或等於 corePoolSize,那麼將這個任務 放入佇列;
- 如果這時候佇列滿了,而且正在執行的執行緒數量小於 maximumPoolSize,那麼還是要建立非核心執行緒立刻執行這個任務;
- 如果佇列滿了,而且正在執行的執行緒數量大於或等於 maximumPoolSize,那麼執行緒池會丟擲異常 RejectExecutionException。