BlockingQueue
介绍
BlockingQueu方法有四种形式,具有不同的操作方式,不能立即满足,但可能在将来的某个时间点满足:
-
一个抛出异常,
-
第二个返回一个特殊值(
null
或false
,具体取决于操作), -
第三个程序将无限期地阻止当前线程,直到操作成功为止
-
第四个程序块在放弃之前只有给定的最大时限。
BolckingQueue在线程上是安全的,
- 所有排队方法使用内部锁或其他形式的并发控制在原子上实现其效果
- 请注意,
BlockingQueue
可以安全地与多个生产者和多个消费者一起使用
BlockingQueue queue = new ArrayBlockingQueue(3);
方式 | 抛出异常 | 有返回值,不抛出异常 | 阻塞等待 | 超时等待 |
---|---|---|---|---|
添加 | add() | offer() | put() | offer() |
删除 | remove() | poll() | take() | poll() |
查看队列首 | element | peek | - | - |
这个图可以很好的理解上面的内容
- remove这个方法
- 如果传入参数,调用的是ArrayBlockingQueue的方法,那么返回的是boolean类型的,就算超界,也不会抛出异常,而是返回boolean类型
- 如果不传入参数,那么就调用的是Queue接口中的方法,这个返回的是删除对象的数据,如果删除为空就会抛出异常