ThreadPoolExecuter 參數分析 7 個 依次
ThreadPoolExecuter (int corePoolSize,
int maximumPoolSize,
long keepAliveTime,
TimeUnit unit,
BlockingQueue<Runnable> workQueue,
ThreadFactory threadFactory,
RejectedExecutionHandler handler )
corePoolSize :核心線程數,保持在線程池中的線程數量
maximumPoolSize:線程池允許最大線程數
keepAliveTime / timeUnit :線程池中線程空閒不被釋放的最大時間,配合timeUnit使用,爲0表示永遠不被釋放
workQueue :BlockingQueue<Runable> 工作線程任務的阻塞隊列,用來存放等待執行的任務,默認實現LInkedBlockingQueue
thredFactory :線程池創建工廠,子類通過自定義實現接口“Thread newThread(Runnable)”通過工廠創建線程池具體的Thread線 程 默認實現了:DefaultThreadFactory
handler(RejectedExecutionHandler) : 拒絕策略
當workQueue無法存放新加任務,或添加新任務後線程池停止任務,使用設置的拒絕策略拒絕新加任務的執行,可以用rejectedExecution來實現自己的拒絕策略 默認策略 : AbortPolicy 拋出異常
拒絕策略:
1:CallerRunsPolicy :調用當前方執行策略
當前調用線程或添加任務的線程執行,這種方法當線程池無法執行時,使用調用方資源來執行任務
2:AbortPolicy : 異常策略
拋出RejectedExecutionException異常
3:DiscardPolicy :直接拋棄策略
對任務不做任何事情,忽略該任務,不執行不報錯
4:DiscardOldestPolicy:拋棄最早任務策略
將workQueue的一個任務取出拋棄,當前任務放入workQueue中執行