corePoolSize
表示常駐核心線程數量。
maximumPoolSize
表示線程池中能同時執行的最大線程數量。這個值必須大於等於corePoolSize,如果這兩個值相等,那就是固定大小的線程池
keepAliveTime
表示線程池中除常駐核心線程之外的其他線程的空閑時間,如果超過這個時間就會銷毀。
queue
緩存隊列,當請求的線程數大於corePoolSize的時候,線程會進入隊列進行阻塞。當這個隊列達到上限之后,線程池會創建新的線程,直到到嗎maximumPoolSize大小位置。
RejectedExecutionHandler
表示拒絕策略。當queue滿了之后,並行活動的線程數大於maximunPoolSize的時候,線程池通過改策略處理請求。
其中RejectedExcutionHandler默認包含四種策略:
AbortPolicy(默認) | 丟棄這個任務並拋出 RejectedExecutionException異常 |
---|---|
DiscardPolicy | 丟棄掉這個任務,但是不拋出異常 |
DiscardOldestPolicy | 拋棄掉在隊列中等待最久的任務,然后把當前任務加入隊列中 |
CallerRunsPolicy | 調用任務的run()方法繞過線程池直接執行 |
另外還支持自定義模式。
public class UserRejectedHandler implements RejectedExecutionHandler {
@Override
public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) {
System.out.println("處理邏輯");
}
}
threadFactory
表示線程工廠。他用來生產一組相同任務的線程。