线程池的几个主要参数的作用和运行原理

贴源码

线程池的几个主要参数的作用和运行原理

为了形象的理解线程池,我们将它比作是一个理发店

corePoolSize(5) 核心线程数

就是里面 5位理发师 接待5个顾客


workQueue(2)  阻塞队列 

就好比 第6个和第7个客户来了 此时5位理发师都在工作,那不好意思了 请坐在凳子上稍等一下


maximumPoolSize  最大线程数(6)

如果第8个顾客来了  这家伙顾客越来越多 不能让等太久了,所以店长(第6个线程)出来接待顾客


unit:这个用来指定keepAliveTime的单位,比如秒:TimeUnit.SECONDS


keepAliveTime (30分钟)空闲线程最大存活时间

超出corePoolSize大小的那些线程(店长) 如果店长接待完了第8个顾客  然后没有要接待的顾客了 等了30分钟 、

依然没有要接待的顾客 那么这时候店长就休息了


RejectedExcutionHandlder: 当workQueue已经满了,并且线程池线程数已经达到maximumPoolSize,将执行拒绝策略

第9个顾客来时,有两个人依然在等待 6个理发师(5个理发师加店长)都在工作,此时已经不能再接待顾客了,所以将谢绝来客


threadFactory:线程工厂,用来创建线程,主要是为了给线程起名字,默认工厂的线程名字:pool-1-thread-3。