int corePoolSize
保留在池中的線程數,哪怕它們是空閑的,除非設置了allowCoreThreadTimeOut
int maximumPoolSize
池中的最大線程數。
long keepAliveTime
當線程的數量大於corePoolSize,這是多余空閑線程的最大存活時間,當空間時間達到keepAliveTime值時,多余的線程會被銷毀並等待新任務。
TimeUnit unit
為keepAliveTime參數設置的時間單位
BlockingQueue workQueue
在任務執行之前用於保存任務的隊列。這個隊列將只保存由execute方法提交的Runnable任務。當池中的工作線程數大於corePoolSize時,這時新進來的任務會被放到該隊列中。
ThreadFactory threadFactory
使用自定義的線程工廠來創建線程,壹般用jdk自帶的Executors.defaultThreadFactory()即可,或者guava庫的ThreadFactoryBuilder。
RejectedExecutionHandler handler
當沒有空閑線程並且線程數已經等於maxnumPoolSize時,如何拒絕新的任務請求。
jdk實現的RejectedExecutionHandler有:
AbortPolicy,總是拋出RejectedExecutionException,默認就是AbortPolicy。
CallerRunsPolicy,如果線程池沒有關閉,在調用者的線程中執行任務。如果線程池已經關閉,那麽直接被丟棄任務。
DiscardOldestPolicy,如果線程池沒有關閉,那麽丟棄隊列中最老的任務,並執行新任務。如果線程池已經關閉,那麽直接被丟棄任務。
DiscardPolicy,什麽都不做,直接丟棄任務。