java 執行緒池的初始化引數解釋和引數設定

Echon125發表於2018-06-22
public ThreadPoolExecutor(int corePoolSize,
                          int maximumPoolSize,
                          long keepAliveTime,
                          TimeUnit unit,
                          BlockingQueue<Runnable> workQueue,
                          ThreadFactory threadFactory,
                          RejectedExecutionHandler handler) 複製程式碼

corePoolSize:核心執行緒數,如果執行的執行緒數小於corePoolSize,則建立新執行緒來執行新任務,即使執行緒池中的其他執行緒是空閒的。

maximumPoolSize:最大執行緒數,可允許建立的執行緒數,corePoolSize和maximumPoolSize設定的邊界自動調整執行緒池的大小。

corePoolSize<執行的執行緒數<maximumPoolSize:僅當佇列滿時才建立新執行緒。

corePoolSize=執行的執行緒數=maximumPoolSize:建立固定大小的執行緒池。

keepAliveTime:如果執行緒數多於corePoolSize,則這多於的執行緒的空閒時間超過keepAliveTime時將被終止

unit:keepAliveTime引數的時間單位

workQueue:儲存任務的阻塞佇列,與執行緒池的大小有關:

當執行的執行緒數少於corePoolSize時,在有新任務時直接建立新執行緒來執行任務而無需再進佇列

當執行的執行緒數等於或者多於corePoolSize,在有新任務新增時則加入佇列,不直接建立執行緒

當佇列滿時,再有新任務加入時則建立新執行緒。

threadFactory:使用threadFactory建立新執行緒,預設使用defaultThreadFactory建立新執行緒。

handler:定義處理唄拒絕任務的策略,預設使用ThreadPoolExecutor.AbortPolicy,任務唄拒絕時丟擲RejectExecutorException.







相關文章