Java常见集合框架(十七):Queue总结

##BlockingQueue

  1. BlockingQueue相比Queue多了两个阻塞操作:put、take。
  2. 不允许使用NUL元素。
  3. 主要用于生产者-使用者队列。
  4. BlockingQueue 利用ReentrantLock实现线程安全、利用Condition实现阻塞。
  5. 所有队列实现BlockingQueue,故都拥有以上特性。

BlockingQueue 方法以四种形式出现。
这里写图片描述

##ArrayBlockingQueue

  1. 一个由数组结构组成的有界阻塞队列。
  2. 队列按 FIFO(先进先出)原则对元素进行排序。
  3. 容量构造实例时指定,不允许扩容。

##LinkedBlockingQueue

  1. 一个由链表结构组成的有界阻塞队列。
  2. 队列按 FIFO(先进先出)排序元素。
  3. 容量固定,默认值Integer.MAX_VALUE ,不允许扩容。
  4. 链接队列的吞吐量通常要高于基于数组的队列,但是在大多数并发应用程序中,其可预知的性能要低。
  5. 利用两个锁ReentrantLock(takeLock、putLock)、两个Condition(notEmpty、notFull)进行读写分离,提高效率,利用Node构成链表式队列。

##DelayQueue

  1. 一个使用优先级队列实现的无界阻塞队列。
  2. 具有延迟功能。
  3. 基于PriorityQueue。
  4. 虽说无界,但PriorityQueue是数组结构形式存储,故最大为Integer.MAX_VALUE。

##PriorityBlockingQueue

  1. 一个支持优先级排序的无界阻塞队列。
  2. 同样基于PriorityQueue。
  3. 无界的说法也同上。

##PriorityQueue

  1. 一个基于优先级堆的无界优先级队列。
  2. 非同步。
  3. 优先级队列不允许使用 null 元素。
  4. 元素以数组结构形式存储,故最大值为Integer.MAX_VALUE。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值