阻塞队列
来源:互联网 发布:oppor9plusroot软件 编辑:程序博客网 时间:2024/04/30 07:10
对许多线程问题,可以通过一个或多个队列以优雅且安全的方式将其形式化。生产者线程向队列插入元素,消费者线程则取出它们。使用队列,可以安全的从一个线程向另一个线程传递数据。
当试图向队列添加元素而队列已满,或是想从队列移出元素而队列为空的时候,阻塞队列(blocking queue)导致线程阻塞。在协调多个线程之间的合作时,阻塞队列是一个有用的工具。工作者线程尅有周期性地将中间结果存储在阻塞队列中。其它的工作者线程移出中间结果并进一步加以修改。队列会自动地平衡负载。如果第一个线程集运行得比第二个慢,第二个线程集在等待结果时会阻塞。如果第一个线程集运行得快,它将等待第二个队列集赶上来。
java.util.concurrent包提供了阻塞队列的几个变种。默认情况下,LinkedBlockingQueue的容量是没有上边界的,但是,也可以选择指定最大容量。LinkedBlockingQueue是一个双端版本。ArrayBlockingQueue在构造时需要指定容量,并且有一个可选的参数来指定是否需要公平性。若设置了公平参数,则等待了最长时间的线程会优先得到处理。通常,公平性会降低性能,只有在确实非常需要时才使用它。
PriorityBlockingQueue是一个带有优先级的队列,而不是先进先出队列。元素按照它们的优先级顺序被移出。该队列是没有容量上限的,但是,如果队列为空,取元素的操作会被阻塞。
- 阻塞队列
- 阻塞队列
- 阻塞队列
- 阻塞队列
- 阻塞队列
- 阻塞队列
- 阻塞队列
- 阻塞队列
- 阻塞队列
- 阻塞队列
- 阻塞队列
- 阻塞队列
- 阻塞队列
- 阻塞队列
- 阻塞队列
- 阻塞队列
- 阻塞队列
- 阻塞队列
- 美联储压力测试报告
- xmanager登陆AIX远程桌面故障解决
- OpenGL和DirectX的介绍
- 十分有效的DW CS5 序列号及破解方法
- oracle 索引的(创建、简介、技巧、怎样查看)
- 阻塞队列
- CSDN论坛RSS阅读,平板电脑专用
- InputManager 哈哈要的就是你!
- javascript 获取滚动条高度+常用js页面宽度与高度[转]
- 左中右布局, 可以拖动的中间块
- 简单文件传输
- 项目小结
- 国外程序员推荐:每个程序员都应读的书
- 交叉编译Apache+PHP+MySQL