1.当设置pool.allowCoreThreadTimeOut(true),无论执行任务所需线程数有没有超过corePoolSize,到达keepAliveTime都会回收。

2.当不设置pool.allowCoreThreadTimeOut(true)的时候,只有触发maximumPoolSize 到达keepAliveTime才会回收。不然会一直等待。什么意思?意思就是比如corePoolSize=5       队列大小4    maximumPoolSize=20我有12个任务,当12个任务进来 先建立5个线程去执行,然后请求队列放置任务4个,还剩3个 只能去触发maximumPoolSize,再建3个线程,然后所有任务完成,线程空闲keepAliveTime时间,那么所有线程会被回收。

 

截图如下:1-----不设置pool.allowCoreThreadTimeOut(true)  触发maximumPoolSize  回收

 

 2.不设置pool.allowCoreThreadTimeOut(true)  不触发maximumPoolSize  一直等待

 

3.------设置pool.allowCoreThreadTimeOut(true)  触发maximumPoolSize  回收

 

 

 4.------设置pool.allowCoreThreadTimeOut(true)  不触发maximumPoolSize  回收