Java 中的 LinkedBlockingQueue 是 java.util.concurrent 包的一部分,并实现了 BlockingQueue 接口。它提供了一个线程安全的、有界的或无界的队列,用于在生产者-消费者场景中管理任务。该队列可用于多线程环境,其中一个线程产生数据,而其他线程消费这些数据。
- 这个类是线程安全的。
- 该队列支持阻塞操作。
- 如果为构造函数提供了容量,它就变成了一个有界队列,意味着它能容纳的元素数量是有限的。
- 如果没有提供容量,该队列是无界的,可以根据添加的元素数量按需增长。
- LinkedBlockingQueue 遵循先进先出 (FIFO) 的顺序来插入和移除元素。
示例: 这个例子演示了如何将元素插入 LinkedBlockingQueue 并打印其内容。
Java
CODEBLOCK_1a5bd853
Output
LinkedBlockingQueue is:
Geek 1
Geek 2
Geek 3
LinkedBlockingQueue 的层级结构
!LinkedBlockingQueue-Class-in-Java
LinkedBlockingQueue 的声明
在 Java 中,LinkedBlockingQueue 的声明可以这样做:
> LinkedBlockingQueue queue = new LinkedBlockingQueue();
注意:这里的 Type 是队列将要存储的元素类型(例如 String, Integer 等)。
构造函数
描述
—
这将创建一个容量为 Integer.MAXVALUE 的 LinkedBlockingQueue。
这将创建一个具有给定(固定)容量的 LinkedBlockingQueue。
这将创建一个容量为 Integer.MAXVALUE 的 LinkedBlockingQueue,最初包含给定集合的元素,按集合迭代器的遍历顺序添加。示例 1:创建一个 LinkedBlockingQueue 并使用 add() 方法向其中插入元素。
Java
CODEBLOCK_ce2df6c1
Output
LinkedBlockingQueue:[1, 2, 3]
示例 2: 创建一个具有指定初始容量的 LinkedBlockingQueue 并向其中添加元素。
Java
CODEBLOCK_2900573e
Output
LinkedBlockingQueue:[1, 2, 3]
示例 3: 使用像 Vector 这样的集合来创建 LinkedBlockingQueue 以初始化队列。
Java
CODEBLOCK_7a602f39
Output
LinkedBlockingQueue:[1, 2, 3]
对 LinkedBlockingQueue 执行各种操作
1. 添加元素:我们可以使用 add() 方法将元素插入到 LinkedBlockingQueue 中。
Java
“
import java.ut