线程池有哪几种工作队列?

线程池有哪几种工作队列?
常见的阻塞队列主要有以下几种:
ArrayBlockingQueue
:ArrayBlockingQueue
是一个基于数组实现的有界阻塞队列,按照先进先出(FIFO)的顺序进行排序。
LinkedBlockingQueue
:LinkedBlockingQueue
是一个基于链表结构的阻塞队列,按照先进先出(FIFO)的顺序进行排序。它可以选择设置容量,如果不设置容量,则默认是一个无边界的阻塞队列,最大长度为Integer.MAX_VALUE
。newFixedThreadPool
线程池使用了这个队列。DelayQueue
:DelayQueue
是一个延迟执行任务的队列,根据指定的执行时间进行排序,时间最小的任务优先执行。如果没有设置执行时间,按照插入到队列的先后顺序进行排序。newScheduledThreadPool
线程池使用了这个队列。PriorityBlockingQueue
:PriorityBlockingQueue
是一个具有优先级的无界阻塞队列,元素按照优先级进行排序。SynchronousQueue
:SynchronousQueue
是一个不存储元素的阻塞队列,每个插入操作必须等待另一个线程的移除操作,否则插入操作将一直处于阻塞状态。吞吐量通常比LinkedBlockingQueue
更高。newCachedThreadPool
线程池使用了这个队列。