QueueAPI记录
队列是一种数据结构.它有两个基本操作:在队列尾部加人一个元素,和从队列头部移除一个元素就是说,队列以一种先进先出的方式管理数据,如果你试图向一个 已经满了的阻塞队列中添加一个元素或者是从一个空的阻塞队列中移除一个元索,将导致线程阻塞.在多线程进行合作时,阻塞队列是很有用的工具。工作者线程可 以定期地把中间结果存到阻塞队列中而其他工作者线线程把中间结果取出并在将来修改它们。队列会自动平衡负载。如果第一个线程集运行得比第二个慢,则第二个 线程集在等待结果时就会阻塞。如果第一个线程集运行得快,那么它将等待第二个线程集赶上来。下表显示了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方法。这些方法在无法完成任务时 只是给出一个出错示而不会抛出异常。
最新文章
- Index
- 今天又学了一招,牛逼!!!解决";-bash:No such file or directory";问题
- paper 124:【转载】无监督特征学习——Unsupervised feature learning and deep learning
- 创建MySQL数据库和表(一)
- Castle 集锦
- framework7学习笔记
- android SharedPreferences 使用
- HDU1007 Quoit Design 【分治】
- endnote X7 加入文献
- Spring五个事务隔离级别和七个事务传播行为
- *C语言有关指针的变量声明中的几个易错点
- IPFS:Filecoin和复制证明
- 【easy】168. Excel Sheet Column Title 171. Excel Sheet Column Number
- 正则去除html字符串中的注释、标签、属性
- docker1.13.1的安装与卸载及mysql5.5安装实例
- C# Note21: 扩展方法(Extension Method)及其应用
- 记录----第一次使用BFS(广度搜索)学习经验总结
- 利用StopWatch类监控Java代码执行时间并分析性能
- 【Django】django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module. Did you install mysqlclient?
- windows下解决PyCharm控制台中文输出乱码