这个线程池的使用方式就是开启线程自动保持时间,并且在需要的时候可以快速创建线程来对当前功能进行支撑。
它的实现代码如下
public static ExecutorService newCachedThreadPool() {
return new ThreadPoolExecutor(0, Integer.MAX_VALUE,
60L, TimeUnit.SECONDS,
new SynchronousQueue<Runnable>());
}
keepAliveTime 给的是60
corePoolSize 给的是0
maximumPoolSize 给的是Integer.MAX_VALUE
这种线程池的使用方式在特定情况下可以瞬间产生成千上万甚至上亿的线程,资源直接被消耗殆尽。