简介
当调度器调度线程池执行任务时,生产者生产任务,消费者消费任务,那么这时就需要一个任务队列,生产者向队列里插入任务,消费者从队列里提取任务执行。调度器里就是通过BlockingQueue实现的队列。
状态
BlockingQueue最终会有四种状况,抛出异常、返回特殊值、阻塞、超时
状态实现类
BlockingQueue是个接口,有如下实现类:
ArrayBlockQueue:1.由数组支持的有界阻塞队列;
2.此队列按 FIFO(先进先出)原则对元素进行排序;
3.创建其对象必须明确大小,像数组一样;
LinkedBlockQueue:1.可改变大小的阻塞队列;
2.FIFO先进先出;
3.创建其对象如果没有明确大小,默认值是Integer.MAX_VALUE
4.链接队列的吞吐量通常要高于基于数组的队列,但是在大多数并发应用程序中,其可预知的性能要低;
PriorityBlockingQueue:1.类似于LinkedBlockingQueue
2.但其所含对象的排序不是FIFO,而是依据对象的自然排序顺序或者是构造函数所带的Comparator决定的顺序;
SynchronousQueue:1.同步队列;
2.同步队列没有任何容量,每个插入必须等待另一个线程移除,反之亦然;
网友评论