今天我们来学习一下多线程中的线程池,说道线程池,自然就是要优先解释一下线程池各个入参了。
ThreadPoolExecutor
ThreadPoolExecutor类是线程池中最核心的一个类了,如果我们想弄清ThreadPoolExecutor的入参,当然是要从它的构造函数入手了。
ThreadPoolExecutor类中一共提高了四个构造函数,入参最多的一个构造函数是七个参数,下面我们就来看一下这七个参数具体是什么,分别有怎样的含义。
参数解释
corePoolSize
int类型,线程池的核心线程大小,线程池中会一直保留着一定的线程数量,即便没有程序调用线程,这些线程依然不会被回收。
maximumPoolSize
int类型,线程池最大线程数量,每次程序在线程池中提取线程时,都会先去确认是否有空闲线程,如果没有空闲线程,才会有线程池进行创建一个新的线程。
但是,线程池中的总数量是有限的,这个参数就是来设置线程池中所能存在的最大线程数量。
keepAliveTime
空闲线程存活时间,当程序执行完成,线程也就空闲下来了,这个时候就会在一定的时间内进行回收销毁;这个空闲时间就是由当前参数来设置的。
unit
keepAliveTime的计量单位。
workQueue
新任务被提交后,会先进入到工作队列中,任务调度时再从队列中取出任务。
ThreadFactory
线程工厂,创建一个新线程时使用的工厂,可以用来设定线程名,是否为daemon线程等等。
handler拒绝策略
当工作队列中的任务达到最大限制,并且线程池中的线程数量也达到了最大限制,这时新任务产生时,就需要拒绝策略,JDK中提供了四种策略,分别是CallerRunsPolicy、AbortPolicy、DiscardPoliy、DiscardOldestPolicy等。