BlockingQueue适合做数据共享的通道。
SynchronousQueue
小于corePoolSize,创建新的线程。
大于corePoolSize,由SynchronousQueue来管理,有空闲线程使用空闲线程,没有则创建新线程(SynchronousQueue不保存提交的任务,而是交给线程执行)。
大于maximumPoolSize,执行拒绝策略。
ArrayBlockingQueue
有界任务队列。
小于corePoolSize,创建新的线程。
大于corePoolSize,新任务加入队列。
队列任务满员之后,创建新的线程,直到小于等于maximumPoolSize。
大于maximumPoolSize,执行拒绝策略。
LinkedBlockingQueue
无界任务队列。
小于corePoolSize时,创建新的线程。
大于corePoolSize时,新任务加入队列。队列无界所以一直加,直到耗尽内存资源。
PriorityBlockingQueue
无界任务队列。带有执行优先级。
小于corePoolSize时,创建新的线程。
大于corePoolSize时,新任务加入队列。