博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BlockingQueue
阅读量:7022 次
发布时间:2019-06-28

本文共 640 字,大约阅读时间需要 2 分钟。

  hot3.png

特点

  • BlockingQueue 本身是一个接口,定义了阻塞队列的规范。

  • BlockingQueue 在Queue的基础上额外支持两个(种)操作

  • 1)在检索一个队列的时候,如果队列为空,则检索方法被阻塞,直到有元素插入进来。

  • 2)在插入一个元素的时候,如果队列不能插入(比如容量满了),则插入方法被阻塞,直到可以插入了。

  • BlockingQueue为当前不能被满足并即刻执行,但是将来一段时间可能被满足并执行的方法提供了四种形式:抛出异常、返回false或者null、永久等待、等待并在一段时间内超时

输入图片说明

  • BlockingQueue 不接受null 值插入。
  • BlockingQueue 可以指定容量,当超过容量的时候,任何插入动作都会被阻塞(或者四种形式中的其他一种)
  • BlockingQueue 主要用于生产者消费者队列。
  • BlockingQueue 的remove(x)这样的方法不是很有效率,可以偶尔使用一下。
  • BlockingQueue 是线程安全的,所有方法(除了批量方法)都通过内部锁或者其他形式的并发控制达到原子性。(BlockingQueue 在多生产者和多消费者的并发下是线程安全的)
  • BlockingQueue 本质上并不提供类似 close 或者shutdown 等方法来停止队列,生产者消费者队列场景下,可以通过生产一个poison的内容给消费者,让其识别并作为关闭逻辑。

转载于:https://my.oschina.net/2go/blog/841960

你可能感兴趣的文章
【 D3.js 选择集与数据详解 — 2 】 使用data()绑定数据
查看>>
SomethingOn生产力提升工具使用
查看>>
beyond programming
查看>>
【转】NET-SNMP安装过程
查看>>
2012-06-18 16:20 ECSHOP用URL重写进行SEO优化
查看>>
Tomcat Server的结构图
查看>>
Nginx RPM包SPEC文件
查看>>
亲测CentOS 6.6 x86_64下源码安装LAMP平台(APACHE 2.4.16+MYSQL 5.6.17+PHP 5.6.7)
查看>>
python 一个XML解析
查看>>
温故而知新Android篇之三
查看>>
oracle的索引
查看>>
Java执行Runtime.exec(shell)报Cannot allocate memory
查看>>
ADT中通过DDMS导入文件出错ddms transfer error: Read-only file system,Failed to push selection...
查看>>
mac 10.11.6 root没有最高权限解决方案
查看>>
tomcat+nginx 以https方式访问
查看>>
camel 项目中用到的功能(一)
查看>>
如何去掉UIWebView的黑色背景
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
Phoenix官方教程 (九) Channel
查看>>