您的位置:首页 > 产品设计 > UI/UE

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操作,不能显示的指定此队列不能插入元素。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: