BlockingQueue在java中的使用

我们已经对线程池中的队列有所了解,那么其中还有一种阻塞队列的类型。可以获取和添加一些元素,当队列已经满了时,就会发挥它的阻塞作用,等队列空了再让新元素进入。下面我们就BlockingQueue的概念、使用场景、子类及它的实现分别带来介绍,看看都有哪些内容吧。

1.概念

是一个先进先出的队列(Queue),为什么说是阻塞(Blocking)的呢?是因为 BlockingQueue 支持当获取队列元素但是队列为空时,会阻塞等待队列中有元素再返回;也支持添加元素时,如果队列已满,那么等到队列可以放入新元素时再放入。

2.使用场景

(1抛出异常;

(2)返回特殊值(null 或 true/false,取决于具体的操作);

(3)阻塞等待此操作,直到这个操作成功;

(4)阻塞等待此操作,直到成功或者超时指定时间。

3.实现的子类

ArrayBlockingQueue 数组型阻塞队列

LinkedBlockingQueue 链表型阻塞队列

DelayQueue 延时队列

SynchronousQueue 同步队列

PriorityBlockingQueue 优先阻塞队列

4.BlockingQueue实现

假设创建了一个阻塞队列(BlockingQueue)bq

生产者:循环调用bq.put(value)添加数据

消费者:循环调用bq.take()读取数据。

原文来自:https://www.py.cn

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容