java ArrayBlockingQueue 使用例子
时间: 2023-10-14 21:13:39 浏览: 54
好的,可以为您提供一个简单的Java ArrayBlockingQueue使用例子:
```
import java.util.concurrent.ArrayBlockingQueue;
public class ArrayBlockingQueueExample {
public static void main(String[] args) {
// 创建一个容量为3的数组阻塞队列
ArrayBlockingQueue<String> queue = new ArrayBlockingQueue<>(3);
// 添加元素到队列
queue.add("Java");
queue.offer("Python");
try {
// 尝试添加一个元素,但队列已满,因此将会被阻塞
queue.put("C++");
} catch (InterruptedException e) {
e.printStackTrace();
}
// 队列已满,再次添加元素将会抛出异常
try {
queue.add("Ruby");
} catch (IllegalStateException e) {
System.out.println("队列已满!");
}
// 从队列中获取并移除头部元素
System.out.println(queue.poll());
System.out.println(queue.poll());
System.out.println(queue.poll());
// 队列中已没有元素,再次获取元素将返回null
System.out.println(queue.poll());
}
}
```
这个例子创建了一个容量为3的ArrayBlockingQueue对象,首先添加了两个元素 Java 和 Python。然后尝试向队列中添加一个元素 C++,但这个队列已满,因此该方法将会被阻塞,直到队列中有空间可用。
接着尝试再次添加一个元素 Ruby,但由于队列已满,该操作将会抛出IllegalStateException异常。
最后,我们从队列中获取并移除了头部的三个元素,然后再次尝试获取一个元素,但由于队列已空,该操作将返回null。
希望这个例子对您有所帮助!
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)