LinkedBlockingQueue 实例
时间: 2024-05-14 15:18:24 浏览: 90
linkedblockingqueue
下面是一个使用 LinkedBlockingQueue 的示例代码:
```java
import java.util.concurrent.LinkedBlockingQueue;
public class LinkedBlockingQueueExample {
public static void main(String[] args) throws InterruptedException {
LinkedBlockingQueue<String> queue = new LinkedBlockingQueue<>(3);
// 添加元素到队列
queue.put("Java");
queue.put("Python");
queue.put("C++");
// 队列已满,再次添加会阻塞
// queue.put("Ruby");
// 获取队列头部的元素
String head = queue.peek();
System.out.println("队列头部元素:" + head);
// 获取并移除队列头部的元素
String element = queue.take();
System.out.println("获取并移除队列头部元素:" + element);
// 队列长度
System.out.println("队列长度:" + queue.size());
// 遍历队列
for (String str : queue) {
System.out.println("元素:" + str);
}
}
}
```
输出结果:
```
队列头部元素:Java
获取并移除队列头部元素:Java
队列长度:2
元素:Python
元素:C++
```
在这个示例中,我们创建了一个容量为 3 的 LinkedBlockingQueue 对象。我们将 Java、Python 和 C++ 添加到队列中。由于我们的队列的容量为 3,因此当我们尝试将 Ruby 添加到队列时,它会被阻塞,直到队列中有空闲空间。我们使用 `peek()` 方法获取队列头部的元素,使用 `take()` 方法获取并移除队列头部的元素。我们使用 `size()` 方法获取队列的长度,并使用 `for-each` 循环遍历队列中的元素。
阅读全文