淺談線程池ThreadPoolExecutor核心參數


public ThreadPoolExecutor(
                          int corePoolSize,                //核心池的大小。
                          int maximumPoolSize,                    //池中允許的最大線程數,這個參數表示了線程池中最多能創建的線程數量
                          long keepAliveTime,               //當線程數大於corePoolSize時,終止前多余的空閑線程等待新任務的最長時間
                          TimeUnit unit,                 //keepAliveTime時間單位
                          BlockingQueue<Runnable> workQueue,    //存儲還沒來得及執行的任務
                          ThreadFactory threadFactory,      //執行程序創建新線程時使用的工廠
                          RejectedExecutionHandler handler   //由於超出線程范圍和隊列容量而使執行被阻塞時所使用的處理程序
)       

 

corePoolSize與maximumPoolSize舉例理解

1、池中線程數小於corePoolSize,新任務都不排隊而是直接添加新線程

2、池中線程數大於等於corePoolSize,workQueue未滿,首選將新任務加入workQueue而不是添加新線程

3、池中線程數大於等於corePoolSize,workQueue已滿,但是線程數小於maximumPoolSize,添加新的線程來處理被添加的任務

4、池中線程數大於大於corePoolSize,workQueue已滿,並且線程數大於等於maximumPoolSize,新任務被拒絕,使用handler處理被拒絕的任務


免責聲明!

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



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