ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

20220210 java.util.concurrent.BlockingQueue

2022-02-10 21:33:11  阅读:180  来源: 互联网

标签:元素 offer 队列 20220210 util concurrent boolean 移除 BlockingQueue


java.util.concurrent.BlockingQueue

基本信息

  • public interface BlockingQueue<E> extends Queue<E>
  • rt.jar
  • 引入版本:1.5

使用说明

  • java.util.Queue 的子接口,Java 集合框架的一员

  • 支持两个附加操作的 Queue,这两个操作是:获取元素时等待队列变为非空,以及 存储元素时等待空间变得可用

    抛出异常 特殊值 阻塞 超时
    插入 add(e) offer(e) put(e) offer(e, time, unit)
    移除 remove() poll() take() poll(time, unit)
    检查 element() peek() 不可用 不可用
  • BlockingQueue 不接受 null 元素。试图 addputoffer 一个 null 元素时,某些实现会抛出 NullPointerExceptionnull 被用作指示 poll 操作失败的警戒值。

  • BlockingQueue 可以是限定容量的。它在任意给定时间都可以有一个 remainingCapacity,超出此容量,便无法无阻塞地 put 附加元素。没有任何内部容量约束的 BlockingQueue 总是报告 Integer.MAX_VALUE 的剩余容量。

  • BlockingQueue 实现主要用于生产者-使用者队列,但它另外还支持 Collection 接口。因此,举例来说,使用 remove(x) 从队列中移除任意一个元素是有可能的。然而,这种操作通常不会有效执行,只能有计划地偶尔使用,比如在取消排队信息时。

  • BlockingQueue 实现是线程安全的。所有排队方法都可以使用内部锁或其他形式的并发控制来自动达到它们的目的。

继承关系

img

接口定义方法

接口定义方法
boolean add(E e);
将指定的元素插入此队列(如果立即可行且不会违反容量限制),在成功时返回 true,如果当前没有可用的空间,则抛出 IllegalStateException
boolean offer(E e);
boolean offer(E e, long timeout, TimeUnit unit) throws InterruptedException;
将指定元素插入此队列中(如果立即可行且不会违反容量限制),成功时返回 true,如果当前没有可用的空间,则返回 false
void put(E e) throws InterruptedException;
将指定元素插入此队列中,将等待可用的空间(如果有必要)。
boolean remove(Object o);
从此队列中移除指定元素的单个实例(如果存在)。
E poll(long timeout, TimeUnit unit)<br/> throws InterruptedException;
获取并移除此队列的头部,在指定的等待时间前等待可用的元素(如果有必要)。
E take() throws InterruptedException;
获取并移除此队列的头部,在元素变得可用之前一直等待(如果有必要)。
public boolean contains(Object o);
如果此队列包含指定元素,则返回 true
int remainingCapacity();
返回在无阻塞的理想情况下(不存在内存或资源约束)此队列能接受的附加元素数量;如果没有内部限制,则返回 Integer.MAX_VALUE
int drainTo(Collection<? super E> c);
int drainTo(Collection<? super E> c, int maxElements);
移除此队列中所有可用的元素,并将它们添加到给定 collection 中。
maxElements 指定最多移除数量

标签:元素,offer,队列,20220210,util,concurrent,boolean,移除,BlockingQueue
来源: https://www.cnblogs.com/huangwenjie/p/15881119.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有