什么是阻塞队列?常见的阻塞队列有哪些?

BlockingQueue,是 java.util.concurrent 包提供的用于解决并发生产者 - 消费者问题的最有用的类,它的特性是在任意时刻只有一个线程可以进行take或者 put操作,并且BlockingQueue提供了超时return null的机制,在许多生产场景里都可以看到这个工具的身影。

队列类型

  1. 无限队列 (unbounded queue ) - 几乎可以无限增长。
  2. 有限队列 ( bounded queue ) - 定义了最大容量。

队列的数据结构

  1. 通常用链表或者数组实现
  2. 一般而言队列具备FIFO先进先出的特性,当然也有双端队列(Deque)优先级队列

在这里插入图片描述
常见的阻塞队列

在这里插入图片描述

  1. ArrayBlockingQueue:基于数组结构的有界阻塞队列(长度不可变)-- 数组+锁实现
  2. LinkedBlockingQueue:基于链表结构的有界阻塞队列(默认容量 Integer.MAX_VALUE)-- 链表+锁实现
  3. LinkedTransferQueue:基于链表结构的无界阻塞/传递队列;
  4. LinkedBlockingDeque:基于链表结构的有界阻塞双端队列(默认容量 Integer.MAX_VALUE);
  5. SynchronousQueue:不存储元素的阻塞/传递队列;
  6. PriorityBlockingQueue:支持优先级排序的无界阻塞队列 – 堆 + 锁
  7. DelayQueue:支持延时获取元素的无界阻塞队列 – PriorityQueue + 锁
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

半夏_2021

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值