阻塞队列

理解阻塞队列,要基于生产者消费者设计模式。

阻塞队列,是一种特殊的队列,它在普通队列的基础上提供了两个附加功能

  1. . 当队列为空的时候,获取队列中元素的消费者线程会被阻塞,同时唤醒生产者线程。

  2. . 当队列满了的时候,向队列中添加元素的生产者线程被阻塞,同时唤醒消费者线程。

一般我们会创有界队列,即容纳元素个数有限。无界队列其实也不是无限,只是容量设的很大。它存在比较大的潜在风险,如果在并发量较大的情况下,线程池中可以几乎无限制的添加任务,容易导致内存溢出 OOM 的问题。

阻塞队列在生产者消费者模型的场景中使用频率比较高,比较典型的就是在线程池中, 通过阻塞队列来实现线程任务的生产和消费功能。

Last updated