Executors.newCachedThreadPool部分解析

基本组成

上图可以看出 newCachedThreadPool 是由 0 核心线程数 + Integer.MAX_VALUE 最大线程数 + SynchronousQueue 阻塞队列组成（其中每个线程存活时间不超过 60s）。

运行流程

其中对于 SynchronousQueue 阻塞队列由于该阻塞队列只能在 take 一个对象的时候才能 offer，因此红色框部分将返回 false 无法进入，此时进入绿框部分进行判断（这时候就会开启一个普通线程并使用普通线程运行对应的命令）。