队列是一种数据结构.它有两个基本操作:在队列尾部加人一个元素,和从队列头部移除一个元素就是说,队列以一种先进先出的方式管理数据,如果你试图向一个 已经满了的阻塞队列中添加一个元素或者是从一个空的阻塞队列中移除一个元索,将导致线程阻塞.在多线程进行合作时,阻塞队列是很有用的工具。工作者线程可 以定期地把中间结果存到阻塞队列中而其他工作者线线程把中间结果取出并在将来修改它们。队列会自动平衡负载。如果第一个线程集运行得比第二个慢,则第二个 线程集在等待结果时就会阻塞。如果第一个线程集运行得快,那么它将等待第二个线程集赶上来。下表显示了jdk1.5中的阻塞队列的操作:

add        增加一个元索                     如果队列已满,则抛出一个IIIegaISlabEepeplian异常
remove   移除并返回队列头部的元素    如果队列为空,则抛出一个NoSuchElementException异常
element  返回队列头部的元素             如果队列为空,则抛出一个NoSuchElementException异常
offer       添加一个元素并返回true       如果队列已满,则返回false
poll         移除并返问队列头部的元素    如果队列为空,则返回null
peek       返回队列头部的元素             如果队列为空,则返回null
put         添加一个元素                      如果队列满,则阻塞
take        移除并返回队列头部的元素     如果队列为空,则阻塞

remove、element、offer 、poll、peek 其实是属于Queue接口。

阻塞队列的操作可以根据它们的响应方式分为以下三类:aad、removee和element操作在你试图为一个已满的队列增加元素或从空队列取得元素时 抛出异常。当然,在多线程程序中,队列在任何时间都可能变成满的或空的,所以你可能想使用offer、poll、peek方法。这些方法在无法完成任务时 只是给出一个出错示而不会抛出异常。

最新文章

  1. Index
  2. 今天又学了一招,牛逼!!!解决"-bash:No such file or directory"问题
  3. paper 124:【转载】无监督特征学习——Unsupervised feature learning and deep learning
  4. 创建MySQL数据库和表(一)
  5. Castle 集锦
  6. framework7学习笔记
  7. android SharedPreferences 使用
  8. HDU1007 Quoit Design 【分治】
  9. endnote X7 加入文献
  10. Spring五个事务隔离级别和七个事务传播行为
  11. *C语言有关指针的变量声明中的几个易错点
  12. IPFS:Filecoin和复制证明
  13. 【easy】168. Excel Sheet Column Title 171. Excel Sheet Column Number
  14. 正则去除html字符串中的注释、标签、属性
  15. docker1.13.1的安装与卸载及mysql5.5安装实例
  16. C# Note21: 扩展方法(Extension Method)及其应用
  17. 记录----第一次使用BFS(广度搜索)学习经验总结
  18. 利用StopWatch类监控Java代码执行时间并分析性能
  19. 【Django】django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module. Did you install mysqlclient?
  20. windows下解决PyCharm控制台中文输出乱码

热门文章

  1. PHP页面提示与跳转
  2. oracle11g的内存分配不当,导致的错误ORA-01034,ORA-00838,ORA-27101
  3. 5.如何修改maven本地仓库
  4. js 、jq强化复习
  5. Redis事务原理分析
  6. 【原创】Kafka 0.11消息设计
  7. 设置select标签的高度
  8. 简单来说一下ui-route
  9. ReIn
  10. spa单页面应用(angular)