用JAVA语言写生产者消费者问题
时间: 2023-05-20 21:00:43 浏览: 113
生产者消费者问题是一个经典的多线程问题,可以用JAVA语言来实现。以下是一个简单的实现:
```java
import java.util.LinkedList;
public class ProducerConsumer {
private LinkedList<Integer> buffer = new LinkedList<>();
private int capacity = 10;
public void produce() throws InterruptedException {
int value = 0;
while (true) {
synchronized (this) {
while (buffer.size() == capacity) {
wait();
}
System.out.println("Producer produced " + value);
buffer.add(value++);
notify();
Thread.sleep(1000);
}
}
}
public void consume() throws InterruptedException {
while (true) {
synchronized (this) {
while (buffer.size() == 0) {
wait();
}
int value = buffer.removeFirst();
System.out.println("Consumer consumed " + value);
notify();
Thread.sleep(1000);
}
}
}
}
```
在这个实现中,我们使用了一个 LinkedList 来作为缓冲区,生产者不断地向缓冲区中添加元素,消费者不断地从缓冲区中取出元素。当缓冲区已满时,生产者会等待,当缓冲区为空时,消费者会等待。使用 synchronized 和 wait/notify 来实现线程同步。
阅读全文