一、概念
具有以下性质的队列:
阻塞队列空,从队列取元素操作会被阻塞,直到有新元素加入
阻塞队列满,从队列加元素操作会被阻塞,直到有旧元素加入
二、作用
阻塞队列的作用也就是其好处:自动管理了阻塞 / 唤醒线程的时机
在这东西出来前,程序员需要自动管理,通过 wait / notify 这样的机制,写起来麻烦
三、BlockingQueue
3.1 体系
继承 Collection 接口,具有七个实现类,常用的三个:
ArrayBlockingQueue:数组构成的有界阻塞队列
LinkedBlockingQueue:链表构成的有界(Integer.MAX_VALUE)阻塞队列
SynchronousQueue:只存单个元素的阻塞队列
3.2 API
插入、删除对应四种形式的 API:
抛出异常
特殊值
阻塞
超时
检查对应两种形式的 API:
抛出异常
特殊值
抛出异常
特殊值
阻塞
超时
插入
add(e)
offer(e)
put(e)
offer(e, time, unit)
移除
remove(e)
poll()
take()
poll(time, unit)
检查
element()
<