java ArrayBlockingQueue demo
时间: 2024-12-17 11:12:22 浏览: 9
ArrayBlockingQueue是Java并发包中的一个阻塞队列,它基于数组实现,并支持FIFO(先进先出)策略。下面是一个简单的ArrayBlockingQueue的Demo,展示了如何创建、插入元素和取出元素:
```java
import java.util.concurrent.ArrayBlockingQueue;
public class ArrayBlockingQueueExample {
public static void main(String[] args) {
// 创建一个容量为5的ArrayBlockingQueue
ArrayBlockingQueue<String> queue = new ArrayBlockingQueue<>(5);
// 向队列中添加元素
try {
queue.put("Element1"); // 添加成功,当前队列为空
queue.put("Element2");
queue.put("Element3");
// 当队列满时,put操作会阻塞,直到有元素被移除
queue.put("Element4", 100); // 等待100毫秒才放入,这里不会阻塞,因为队列满了
System.out.println("Elements in the queue:");
for (String item : queue) {
System.out.println(item);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
// 从队列中取元素
String removedItem;
try {
removedItem = queue.take(); // 阻塞等待,直到有元素可用
System.out.println("Removed Item: " + removedItem); // 输出第一个添加的"Element1"
} catch (InterruptedException e) {
e.printStackTrace();
}
// 如果队列还有剩余元素,继续取出
while (!queue.isEmpty()) {
removedItem = queue.take();
System.out.println("Removed Item: " + removedItem);
}
}
}
```
在这个示例中,我们首先创建了一个大小为5的队列,然后尝试依次添加元素,当队列满时,`put`操作会被阻塞。接着通过`take`方法取出元素,直到队列为空。`take`方法会在队列空时阻塞。
阅读全文