如果你提交任務時,線程池隊列已滿,這時會發生什么?


這里區分一下:

1、如果使用的是無界隊列 LinkedBlockingQueue,也就是無界隊列的話,沒關

系,繼續添加任務到阻塞隊列中等待執行,因為 LinkedBlockingQueue 可以近乎

認為是一個無窮大的隊列,可以無限存放任務

 

2、如果使用的是有界隊列比如 ArrayBlockingQueue,任務首先會被添加到

ArrayBlockingQueue 中,ArrayBlockingQueue 滿了,會根據

maximumPoolSize 的值增加線程數量,如果增加了線程數量還是處理不過來,

ArrayBlockingQueue 繼續滿,那么則會使用拒絕策略

RejectedExecutionHandler 處理滿了的任務,默認是 AbortPolicy


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM