ThreadPoolExecutor
ThreadPoolExecutor 是 Java 提供的一个基础的通用的线程线程池实现。可以直接创建一个ThreadPoolExecutor 对象来创建一个线程池,它提供了丰富的配置参数,通过指定不同参数值可以灵活的定制出符合我们需求的线程池出来。
ThreadPoolExecutor 提供了多个构造方法,其中最基础的构成方法如下:
public ThreadPoolExecutor(int corePoolSize,
int maximumPoolSize,
long keepAliveTime,
TimeUnit unit,
BlockingQueue workQueue,
ThreadFactory threadFactory,
RejectedExecutionHandler handler)
-
corePoolSize:核心线程数,线程池内常驻的线程数量。即使在没有任务执行时线程池内线程数也是这个大小,但当任务队列满了以后线程池是可以创建超出这个数量的线程的。
-
maximumPoolSize:线程池中线程数的最大大小,当任务队列满了以后并且没有空闲线程时可以创建超过核心线程数量的线程,但也不能无限制的新建,maximumPoolSize 控制了线程池内线程数的上限。
-
keepAliveTime:当线程池创建出超过核心线程数的线程后,多出的线程执行完任务后是要回收的,如果某个线程的空时间超过了空闲存活时间,那么这个线程将被终止。
-
TimeUnit unit:设置时间单位。
-
BlockingQueue<Runnable> :设置任务队列
-
ThreadFactory threadFactory :设置指定线程工厂,有默认也可以定制线程池。
-
RejectedExecutionHandler :设置拒绝策略(饱和策略),即当使用有界队列并且队列被填满后遵循的规则。