Java 常见队列【背】

1. java.util

1)PriorityQueue

关键词:无界、非阻塞、非线程安全

  • 无界

        内部存储采用 Object[],且未由 final 关键字修饰

  • 非阻塞

        无任何锁机制保障

2)PriorityBlockingQueue

关键词:无界、阻塞、线程安全

  • 无界

        内部存储采用 Object[],且未由 final 关键字修饰

  • 非阻塞

        整个队列共用同一把锁


2. java.util.concurrent

1)ArrayBlockingQueue

关键词:固定长度、阻塞

  • 固定长度

        队列在初始化时需指定长度,并在操作过程中不允许被改变

        内部存储采用 Object[],并由 final 关键字修饰

  • 阻塞

        当队列为空时,“取”的操作会被 block

        当队列已满时,“插”的操作会 block

        整个队列共用同一把锁

2)ConcurrentLinkedQueue

关键词:无界、非阻塞

  • 无界

        内部存储采用 List<Node>(链表)

  • 非阻塞

        因为无界,所以非阻塞

        但是,多线程间存在“竞争”时,需等待

3)DelayQueue

关键词:无界、阻塞

  • 无界

        内部存储采用 PriorityQueue

  • 阻塞

        当队列中的 delay 时间未到或队列为空时,“取”的操作会被 block

        整个队列共用同一把锁

4)LinkedBlockingQueue

5)LinkedTransferQueue 

6)PriorityBlockingQueue

关键词:无界、阻塞

  • 无界

        逻辑上的无界(内存是有限的)

        内部存储采用 Object[]

  • 阻塞

         整个队列共用同一把锁

7)SynchronousQueue

        生产者执行“插”操作,须等待消费者执行“取”操作,若消费者未执行“取”操作,生产者等待;反之,亦然

8)ConcurrentLinkedDeque

关键词:双端、非阻塞

  • 双端

        队头和队尾均能执行入队和出队操作

        队头 - 调用 push 方法

        队尾 - 调用 add 方法

  • 非阻塞 

        CAS

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值