阻塞队列 BlockingQueue<E>的使用(一)

一、概述    

    BlockingQueue<>是线程安全的阻塞队列。

    这一篇只是简单的翻译一下 java8 API 中的内容。以下内容全部来自 java8 的 API

    一个支持没有存储元素的队列,当队列中没有元素时该队列支持等待检索,队列存储了一个元素时队列将变的可用。

    BlockingQueue<E>中的方法有四种形式,不同的处理方法不能立即满足,但在未来某个时刻可能会满足:抛出异常,返回一个特殊的值(不管是NULL还是FALSE,取决于操作),BROC会无限期地调用当前线程直到操作成功,并且在放弃之前只对给定的最大时间限制。如下表中所示:

 抛出异常返一个特殊值阻塞超时
添加元素add(e)offer(e)put(e)offer(e, time, unit)
移除元素remove()poll()take()poll(time, unit)
检查元素element()peek()not applicablenot applicable
阻塞队列不接受null元素,在add()、put()和offer()方法的实现中添加null元素会抛出空指针异常。阻塞队列可能是容量有限的。在任何给定的时间,它可能有一个剩余容量,除了没有阻塞之外,没有附加的元素。没有任何固有容量约束的阻塞队列剩余容量为  Integer . MAX_VALUE。

    虽然BlockingQueue<>实现的的设计主要是用于生产者-消费者模式的,但是也实现了Collection<>接口。所以可以使用remove()方法从一个队列中移除元素。这种移除操作一般不能高效的执行,只有在一些特殊情况下才会使用,比如:当队列被取消时。

    BlockingQueue的实现是线程安全的。所有排队方法都是通过原子级采用并发控制内部锁或其他形式实现的。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值