1、缓存线程池创建
缓冲池没有核心线程数为0,没有上限,线程空闲保存60s存活时间,任务队列采用的SynchronousQueue队列
2、线程池实例化后就可以执行任务,一般通过execute方法调用
分为3个步骤:
步骤1:线程任务小于核心线程数,由于缓存线程池corePoolSize=0,所以该步骤不会被执行到
步骤2:判断队列是否添加成功,由于采用的SynchronousQueue队列,所以一般情况下该offer对象返回false,不会执行该分支代码
步骤3:队列添加失败,就直接执行任务addWorker接口。
3、SynchronousQueue.offer接口分析,为什么添加失败
此接口是一个非阻塞接口,如果没有消费者(poll方法等待keepAliveTime时间或者take方法阻塞等待)就会立刻返回结果 false,所