8.4J.U.C-BlockingQueue
Blocking Queue
阻塞队列,是线程安全的,主要用于生产者消费者的场景
在如下情况对阻塞队列进行访问会造成阻塞
当队列满的时候,进行入队操作
当队列空的时候,进行出队操作
使用Blocking Queue时,主要包括3类操作:插入、移除、检查。各一类操作可能有多个方法实现,当方法不能立即执行时,不能的方法现实,表现不同,请根据实际情况选用不同的方法
-
不能立即执行时,会Throws Exception
不能立即执行时,会返回一个特定值
不能立即执行时,操作会被阻塞
不能立即执行时,会被阻塞指定的时间,若超时还未执行或返回一个特定值
Insert
add(o)
offer(o)
put(o)
offer(o,timeout,timeUnit)
Remove
remove(o)
poll()
take()
poll(timeout,timeunit)
Examine
element()
peek(o)
BlockingQueue的一些实现类
ArrayBlockingQueue:内部实现为数组的有界阻塞队列,初始化时必须指定其队列大小,且初始化后大小不允许在改变
DelayQueue:当超时时,队列中的元素被取出的无界队列
LinkedBlockingQueue:初始化时指定队列大小,则为有界的队列,否则为无界的队列,内部实现为列表
PriorityBlockingQueue:可以根据排序规则实现具有优先级的无界队列
SynchronousQueue:内部仅允许一个元素的队列
Last updated
Was this helpful?