面試題:線程池處理流程 沒用


 

①首先會判斷核心線程池里是否有線程可執行,有空閑線程則創建一個線程來執行任務。

②當核心線程池里已經沒有線程可執行的時候,此時將任務丟到任務隊列中去。

③如果任務隊列(有界)也已經滿了的話,但運行的線程數小於最大線程池的數量的時候,此時將會新建一個線程用於執行任務,但如果運行的線程數已經達到最大線程池的數量的時候,此時將無法創建線程執行任務。

所以實際上對於線程池不僅是單純地將任務丟到線程池,線程池中有線程就執行任務,沒線程就等待。

 

 

 

另一種流程解釋::::

step1.調用ThreadPoolExecutor的execute提交線程,首先檢查CorePool,如果CorePool內的線程小於CorePoolSize,新創建線程執行任務。
step2.如果當前CorePool內的線程大於等於CorePoolSize,那么將線程加入到BlockingQueue。
step3.如果不能加入BlockingQueue,在小於MaxPoolSize的情況下創建線程執行任務。
step4.如果線程數大於等於MaxPoolSize,那么執行拒絕策略。




免責聲明!

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



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