并发编程7 阻塞队列 BlockingQueue:Queue,Deque及Blocking

关系

Queue接口

  • add 添加
  • offer 添加,不会抛出异常
  • remove 移除一个元素,空集合抛出异常
  • poll 移除一个元素,空集合返回null
  • element 查询一个元素,不在队列中删除,空集合抛出异常
  • peek 查询一个元素,不在队列中删除,空集合返回null

BlockingQueue extends Queue

  • put 添加一个元素,如果队列已满阻塞
  • take 移除一个元素,如果队列已空阻塞

Deque extends Queue 双端队列

  • addFirst 添加
  • addLast 添加
  • 其他方法与Queue中的相似,提供首尾

BlockingDeque extends Deque,BlockingQueue

BlockingQueue实现

  • ArrayBlockingQueue 数组实现的环形阻塞队列,有容量限制
  • LinkedBlockingQueue 单向链表的阻塞队列
  • PriorityBlockingQueue 优先级阻塞队列
  • DelayQueue 延时队列
  • SynchronousQueue 同步阻塞队列

ArrayBlockingQueue

总结

  • 使用数组实现环形队列
  • 使用ReentrantLock和Condition实现put和take方法的加锁,条件阻塞和唤醒
    • put方法,加锁,Condition队列满则阻塞,否则入队,唤醒空队列的阻塞Condition
    • take方法,加锁,Condition队列空则阻塞,否则入队,唤醒满队列的阻塞Condition
      在这里插入图片描述
      在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值