前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java线程池队列ArrayBlockingQueue的使用及详细介绍-刘宇

Java线程池队列ArrayBlockingQueue的使用及详细介绍-刘宇

作者头像
用户7886150
修改2021-04-08 11:04:45
1.7K0
修改2021-04-08 11:04:45
举报
文章被收录于专栏:bit哲学院

参考链接: Java ArrayBlockingQueue

Java线程池队列ArrayBlockingQueue的使用及详细介绍-刘宇

 一、什么是ArrayBlockingQueue?二、使用场景三、常用的方法1、构造方法2、add方法3、offer方法4、put方法5、take方法6、poll方法7、peek方法8、remove方法9、contains方法10、remainingCapacity方法11、drainTo方法

 作者:刘宇 CSDN博客地址:https://blog.csdn.net/liuyu973971883 有部分资料参考,如有侵权,请联系删除。如有不正确的地方,烦请指正,谢谢。 

一、什么是ArrayBlockingQueue? 

ArrayBlockingQueue是一个阻塞的队列,继承了AbstractBlockingQueue,间接的实现了Queue接口和Collection接口。底层以数组的形式保存数据,所以它是基于数组的阻塞队列。ArrayBlockingQueue是有边界值的,在创建ArrayBlockingQueue时就要确定好该队列的大小,一旦创建,该队列大小不可更改。内部的全局锁是使用的ReentrantLock。 

二、使用场景 

先进先出(队首是最旧的元素;队尾是新添加的元素)有界队列(即初始化时指定的容量,就是队列最大的容量,不会出现扩容,容量满,则阻塞进队操作;容量空,则阻塞出队操作)队列不支持空元素 

三、常用的方法 

1、构造方法 

capacity:队列初始化大小fair:表示该队列中的可重入锁是否公平,默认为falsec:添加的集合 

ArrayBlockingQueue(int capacity)

ArrayBlockingQueue(int capacity, boolean fair)

ArrayBlockingQueue(int capacity, boolean fair, Collection<? extends E> c)

2、add方法 

 在队列的尾部添加元素,返回true。当队列满的时候会抛出IllegalStateException异常。 

boolean add(E e)

3、offer方法 

 在队列的尾部添加元素,如果添加成功返回true,否则返回false。 

e:添加的元素timeout:最多等待的时长unit:时间单位 

boolean offer(E e)

boolean offer(E e, long timeout, TimeUnit unit) throws InterruptedException

4、put方法 

 在队列的尾部添加元素,如果队列已满,则会阻塞住,等待队列有空闲位置,该方法可被打断。 

void put(E e) throws InterruptedException

5、take方法 

 获取队列中的元素,如果没有则会被阻塞住。 

E take() throws InterruptedException

6、poll方法 

 获取队列中队首的元素,获取后该元素就会移除该队列 

timeout:等待时长unit:时间单位 

//立即返回

E poll()

//如果不能立即取出,则等待一定时间

E poll(long timeout, TimeUnit unit) throws InterruptedException

7、peek方法 

 读取队列中队首的元素,不会删除该元素。 

E peek()

8、remove方法 

 删除队列中指定元素。 

boolean remove(Object o)

9、contains方法 

 查询队列中是否存在某个元素 

boolean contains(Object o)

10、remainingCapacity方法 

 返回队列中剩余空闲位置 

int remainingCapacity()

11、drainTo方法 

 将队列中的元素排到指定集合中去 

c:目标集合maxElements:最多排几个元素 

int drainTo(Collection<? super E> c)

int drainTo(Collection<? super E> c, int maxElements)

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档