BlockingQueue

BlockingQueue提供了线程安全的队列访问方式:当阻塞队列进行插入数据时,如果队列已满,线程将会阻塞等待直到队列非满;从阻塞队列取数据时,如果队列已空,线程将会阻塞等待直到队列非空。并发包下很多高级同步类的实现都是基于BlockingQueue实现的。

阻塞队列有四种行为
无法操作:入队时队列满了或者出队时队列为空

行为 描述 enqueue dequeue
抛异常 无法操作时抛出异常 add(o) remove()
返回特定值 无法操作时返回一个特定值,通常为true/false offer(o) poll()
阻塞 无法操作时会一直阻塞,直到可以正常操作 put(o) take()
超时 无法操作时会阻塞不超过给定超时时间,返回一个特定值 offer(o, timeout, timeunit) poll(timeout, timeunit)

BlockingQueue由来及实现

看不清楚新标签中打开大图查看 BlockingQueue类图