BlockingQueue
2015-08-08 16:14
489 查看
BlockingQueue是java.util.concurrent提供的一个工具接口。BlockingQueue的主要特征是,向empty queue取数据或者向full queue插入数据时,可以阻塞等待条件成熟。BlockingQueue实现的子类有以下几个:
ArrayBlockingQueue, DelayQueue, LinkedBlockingDeque, LinkedBlockingQueue, LinkedTransferQueue, PriorityBlockingQueue, SynchronousQueue
BlockingQueue的方法可以按照执行是否能立即成功分为4大类:
Throws exception: 当add、remove、element失败后,抛出异常
Special value: 当offer、poll、peek失败后,根据操作的类型,返回false、null
Blocks: 当put、take不能立即成功,会阻塞线程直到操作能够成功。
Times out:offer、poll阻塞指定的时间后,返回一个特定的值。
注意事项
BlockingQueue不接受null元素,当试图put、offer或者offer一个null元素时,会抛出NullPointerException。null会作为poll的一个特殊的返回值。
BlockingQueue可以设置容量大小,当没有显示指定时,大小是 Integer.MAX_VALUE。
BlockingQueue 是线程安全的,所有的单个元素的操作都是原子性的,但是批量操作不是原子性的。比如addAll、containsAll、retainAll、removeAll。
BlockingQueue不支持close或者shutdown操作,不能显示的指定此队列不能插入元素。
ArrayBlockingQueue, DelayQueue, LinkedBlockingDeque, LinkedBlockingQueue, LinkedTransferQueue, PriorityBlockingQueue, SynchronousQueue
BlockingQueue的方法可以按照执行是否能立即成功分为4大类:
Throws exception: 当add、remove、element失败后,抛出异常
Special value: 当offer、poll、peek失败后,根据操作的类型,返回false、null
Blocks: 当put、take不能立即成功,会阻塞线程直到操作能够成功。
Times out:offer、poll阻塞指定的时间后,返回一个特定的值。
注意事项
BlockingQueue不接受null元素,当试图put、offer或者offer一个null元素时,会抛出NullPointerException。null会作为poll的一个特殊的返回值。
BlockingQueue可以设置容量大小,当没有显示指定时,大小是 Integer.MAX_VALUE。
BlockingQueue 是线程安全的,所有的单个元素的操作都是原子性的,但是批量操作不是原子性的。比如addAll、containsAll、retainAll、removeAll。
BlockingQueue不支持close或者shutdown操作,不能显示的指定此队列不能插入元素。
相关文章推荐
- poj 2229 Ultra-QuickSort (归并排序求逆序数对)
- Selenium2学习-033-WebUI自动化实战实例-031-页面快照截图应用之二 -- 区域截图
- hdu 1711Number Sequence (KMP——输出模式串第一次出现位置)
- UIButton
- android stduio 引入 .so
- UISegmentedControl方法与属性的总结
- UI08_UItableView(关于cell滑动条消失,隐藏cell线,解决cell的线不对应问题)
- 周赛-Equidistant String
- 周赛-Equidistant String 分类: 比赛 2015-08-08 15:44 6人阅读 评论(0) 收藏
- iOS基础-UIKit框架-触摸事件-事件传递
- Xib中UIScrollView添加约束步骤
- UILabel与UIFont的用法和属性的一些总结
- 蓝牙协议(bluetooth spec)
- UIActivityIndicatorView控件的属性和方法
- UIProgress控件的属性和方法
- UIPageControll 的属性和用法
- Ultra-QuickSort
- IOS中UIAlertView(警告框)常用方法总结
- 【简单dp】poj 2127 Greatest Common Increasing Subsequence【最长公共上升子序列】【模板】
- IOS中UIActionSheet使用方法详解