用java代码写一个阻塞队列
时间: 2023-12-29 15:44:53 浏览: 119
java模拟阻塞队列
以下是一个基于Java的阻塞队列示例代码:
```
import java.util.LinkedList;
import java.util.Queue;
public class BlockingQueue<T> {
private Queue<T> queue = new LinkedList<>();
private int capacity;
public BlockingQueue(int capacity) {
this.capacity = capacity;
}
public synchronized void put(T element) throws InterruptedException {
while (queue.size() == capacity) {
wait();
}
queue.offer(element);
notify();
}
public synchronized T take() throws InterruptedException {
while (queue.isEmpty()) {
wait();
}
T element = queue.poll();
notify();
return element;
}
}
```
该代码使用了Java的内置队列LinkedList来存储元素。put()方法用于向队列中添加元素,如果队列已满,则线程会等待。take()方法用于从队列中取出元素,如果队列为空,则线程会等待。这个实现是线程安全的,因为使用了synchronized关键字。
阅读全文