ThreadPoolExecutor教程在java.util的教程有。
ThreadPoolExecutor参数
public ThreadPoolExecutor(int corePoolSize,
int maximumPoolSize,
long keepAliveTime,
TimeUnit unit,
BlockingQueue workQueue,
ThreadFactory threadFactory,
RejectedExecutionHandler handler)
l corePoolSize: 线程池里面保持运行的线程数 , 除非设置了 allowCoreThreadTimeOut.
l maximumPoolSize: 线程池允许的最大的线程数 .
l keepAliveTime: 当前线程数大于 core时 , 闲置的线程最大的等待新任务来到的时间 , 超过时间后闲置线程会被关闭。
l Unit: keepAliveTime的单位 , TimeUnit有定义。
l workQueue: 任务( Runnable 任务 ,执行 execute 提交的任务)执行前会放在工作队列当中。常用的实现有
LinkedBlockingQueue, ArrayBlockingQueue, PriorityBlockingQueue,
SynchronousQueue, 具体区别参考上章节
l threadFactory, 默认是使用 DefaultThreadFactory 创建线程 .
l RejectedExecutionHandler handler, 当任务 Executor. execute无法受理
,例如队列满了等情况则执行 reject handler, 有CallerRunsPolicy(提交任务的线程执行提交的任务 ),
AbortPolicy( 中止执行且抛出异常 ), DiscardPolicy( 不处理该任务 ),
DiscardOldestPolicy( 抛弃最老的任务再次提交当前任务 ), 默认使用 AbortPolicy.
当前poolSize达到core pool size的时候, 新任务来但是队列满了, 就要看maximumPoolSize了,
如果此时poolSize