8.7 阻塞队列BlockingQueue

简介

当调度器调度线程池执行任务时,生产者生产任务,消费者消费任务,那么这时就需要一个任务队列,生产者向队列里插入任务,消费者从队列里提取任务执行。调度器里就是通过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.同步队列没有任何容量,每个插入必须等待另一个线程移除,反之亦然;


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 相关文章Java并发编程(一)线程定义、状态和属性 Java并发编程(二)同步Java并发编程(三)volatil...
    刘望舒阅读 5,252评论 1 31
  • 1.阻塞队列定义阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线程。...
    SDY_0656阅读 449评论 0 1
  • 一、多线程 说明下线程的状态 java中的线程一共有 5 种状态。 NEW:这种情况指的是,通过 New 关键字创...
    Java旅行者阅读 4,738评论 0 44
  • 阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作是:在队列为空时,获取元素的线...
    端木轩阅读 1,022评论 0 2
  • Objective 你对今天学的记得什么? 英国脱欧,川普 逆全球化,移民 美国 北美自贸区,加拿大墨西哥 自由化...
    甜甜的大橙子阅读 120评论 0 0