BlockingQueue

2016-08-18  本文已影响34人  jacky123

了解 BlockingQueue:

BlockingQueue 位于 java.util.concurrent 中,定义为 public interface BlockingQueue<E> extends Queue<E>。

在多线程领域:所谓阻塞,在某些情况下会挂起线程(即阻塞),一旦条件满足,被挂起的线程又会自动被唤醒。

理想情况下,如果生产者产出数据的速度大于消费者消费的速度,并且当生产出来的数据累积到一定程度的时候,那么生产者必须暂停等待一下(阻塞生产者线程),以便等待消费者线程把累积的数据处理完毕。


BlockingQueue 的核心方法:

1.放入数据

2. 获取数据:


常见 BlockingQueue

  1. LinkedBlockingQueue
  2. DelayQueue (没有大小限制)
    DelayQueue 中的元素只有当其指定的延迟时间到了,才能够从队列中获取到该元素.DelayQueue 是一个没有大小限制的队列,
    因此往队列中插入数据的操作(生产者)永远不会被阻塞,而只有获取数据的操作(消费者)才会被阻塞。
  3. PriorityBlockingQueue 基于优先级的阻塞队列
  4. SynchronousQueue

示例参考

生产者消费者

上一篇 下一篇

猜你喜欢

热点阅读