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

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

阻塞队列

BlockingQueue除了队列的基本特性外,还支持额外的操作:当获取元素时,如果队列已空,则阻塞直到队列非空。当添加元素时,如果队列已满,则阻塞直到队列有空闲空间。
BlockingQueue的方法有4种形式,对于不能立即被满足,但可能会在未来的某个时刻被满足的操作,它们各自有不同的处理方式:
第一种是抛出异常。
第二种是返回特殊值(null或者false,取决于操作)
第三种是一直阻塞当前线程直到操作成功
第四种是阻塞直到超时退出。
这些方法汇总如下:

BlockingQueue不接受null元素。如果尝试add, put or offer 一个null元素,则会抛出NullPointerException。null被用作表明poll操作失败的警示值。

BlockingQueue可以限定容量。在任何指定时刻它都可能有一个剩余容量,但超出了这个容量,没有任何元素可以不阻塞而put进这些剩余容量中。没有容量限制的阻塞队列总是
XXXXX

 

ArrayBlockingQueue

ArrayBlockingQueue是一个由数组实现的有界队列。队列中的元素遵循FIFO顺序。队列的头部元素在队列中存在时间最长,尾部元素存在时间最短。新元素插入到队列尾部,获取元素的操作在队列的头部进行。
这是一个典型的”有界缓存区”,固定大小的数组保存着元素,这些元素被生产者插入,并由消费者取出。队列一旦创建,容量将不能修改。向已满的队列中插入元素时将会导致阻塞,向已空的队列中回去元素也同样会阻塞。
这个类支持对等待的消费者和生产者线程进行排序的可选的公平策略。默认情况是保证这种排序的。然而,创建队列时通过将公平性设置为true,会保证线程以FIFO的顺序访问。公平性通常会降低吞吐量,但也减少了可变性和避免了不平衡性。

转载于:https://www.cnblogs.com/rouqinglangzi/p/10292209.html

你可能感兴趣的文章
我的友情链接
查看>>
书摘-团队
查看>>
The Apply method of function object
查看>>
典型QoS配置案例
查看>>
利用for与if写出你的第一个小脚本
查看>>
多个ElasticSearch Cluster的一致性问题
查看>>
PHP常用代码大全
查看>>
深入浅出Swarm
查看>>
eclipse中拷贝提示信息
查看>>
socket是什么
查看>>
RHEL6.5 CentOS 6.5 support NTFS filesystem !
查看>>
从零开始搭建K8S--如何监控K8S集群日志
查看>>
【转】僵尸进程的查看和杀掉
查看>>
SCDPM 2010之一——安装
查看>>
自己DIY osc android 客户端
查看>>
Confluence 6 管理插件和组件
查看>>
开发任意网站Android客户端
查看>>
java中session对象及其常用方法
查看>>
深究AngularJS(1)——ui-router详解
查看>>
软考培训 - 挣值分析出题趋势分析
查看>>