BlockingQueue
BlockingQueue提供了线程安全的队列访问方式:当阻塞队列进行插入数据时,如果队列已满,线程将会阻塞等待直到队列非满;从阻塞队列取数据时,如果队列已空,线程将会阻塞等待直到队列非空。并发包下很多高级同步类的实现都是基于BlockingQueue实现的。
阻塞队列有四种行为无法操作:入队时队列满了或者出队时队列为空
行为 | 描述 | enqueue | dequeue |
---|---|---|---|
抛异常 | 无法操作时抛出异常 | add(o) | remove() |
返回特定值 | 无法操作时返回一个特定值,通常为true/false | offer(o) | poll() |
阻塞 | 无法操作时会一直阻塞,直到可以正常操作 | put(o) | take() |
超时 | 无法操作时会阻塞不超过给定超时时间,返回一个特定值 | offer(o, timeout, timeunit) | poll(timeout, timeunit) |
BlockingQueue由来及实现
null