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處理被拒絕的任務
