备注:由于SynchronousQueue本质是将任务不断扔给一个新线程,所以这样在固定大小的线程池中就没有使用的意义了,因为,按照该队列的特性,长此以往,当任务数量超过线程池大小的时候,SynchronousQueue还欲求不满,需要新线程,而这样的需求又会因线程饱和而被拒绝,如此只会导致一系列的无意义动作。这也就是为什么将他用在一个可以无线扩充的线程池newCachedThreadPool的原因。
当任务之间存在依赖关系的时候,不适合使用固定大小的线程池,这样很容易因线程“饥渴”而导致死锁发生,为了避免该状况,一般会采用newCachedThreadPool。