请编写一个程序,基于LinkedList实现阻塞队列(可参考LinkedBlockingQueue源码)
时间: 2024-04-30 20:22:39 浏览: 70
javalinkedlist:编写一个程序,演示您了解如何使用Java LinkedList类
好的,我会尽力回答您的问题。以下是基于LinkedList实现阻塞队列的示例代码:
```java
import java.util.LinkedList;
public class BlockingQueue<T> {
private LinkedList<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.add(element);
notifyAll();
}
public synchronized T take() throws InterruptedException {
while (queue.isEmpty()) {
wait();
}
T element = queue.remove();
notifyAll();
return element;
}
}
```
这个阻塞队列类有一个包含容量参数的构造函数。 `put` 方法在队列满时会阻塞,直到队列有空间可用为止。 `take` 方法在队列为空时会阻塞,直到有元素可供取出为止。在 `put` 和 `take` 方法中使用 `wait` 和 `notifyAll` 实现了阻塞和唤醒的逻辑。
希望这个示例代码可以帮助到您!
阅读全文