Concurrent包相关技术

本文介绍了阻塞式队列,它遵循先进先出原则,有界时队列满添加、队列为空获取会被阻塞,BlockingQueue是其顶级接口,常用于生产消费/消息队列。还介绍了ArrayBlockingQueue、LinkedBlockingQueue、PriorityBlockingQueue等类型的特点,以及同步队列和阻塞式双端队列的情况。

                  BlockingQueue - 阻塞式队列


一、概述

  1. 依然遵循先进先出的原则
  2. 阻塞式队列往往是有界的:意味着如果队列已满,则新的添加请求会被阻塞;如果队列为空,则新的获取请求也会被阻塞
  3. BlockingQueue是阻塞式队列的顶级接口
  4. 最常使用在生产消费/消息队列

二、ArrayBlockingQueue - 阻塞式顺序队列

  1. 底层会基于数组来存储数据
  2. 在使用的时候需要指定容量,且容量指定之后不可改变

三、LinkedBlockingQueue - 阻塞式链式队列

  1. 底层是基于节点来存储数据
  2. 可以指定容量,容量指定号之后不可变的。也可以不指定容量,则默认是Integer.MAX_VALUE -> 2的31次方-1。因为实际开发中,几乎不可能向队列中添加21亿个元素,所以可以人为的认为这个队列如果不指定容量是无界的

四、PriorityBlockingQueue - 具有优先级的阻塞式队列

  1. 可以指定容量也可以不指定容量,如果不指定默认是11
  2. 在获取元素的时候是有序的 - 要求存入的元素必须能够排序,这就意味着元素对应的类必须实现接口Comparable,重写compareTo方法指定比较规则
  3. 如果是迭代遍历,不保证排序

五、  - 同步队列

  1. 不需要指定容量,它的容量默认为1,并且只能为1

扩展:BlockingDeque - 阻塞式双端队列,类似于BlockingQueue,在使用的时候也需要指定容量,但是可以两端放两端拿

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值