第1个回答 推荐于2016-09-21
生产者:当产品不够时生产产品
消费者:当产品存在时消费产品
临界一:当产品达到上限时,停止生产,通知消费者消费
临界二:当产品达到下限时,停止消费,通知生产者生产
共享数据:产品
code
import java.util.ArrayList;
public class ProducerAndConsumer {
ArrayList<String> products = new ArrayList<String>();
int MAX = 10;
boolean cancel;
synchronized void produce() {
int size = products.size();
if (size < MAX) {
products.add(size + "");
} else {
notifyAll();
}
}
synchronized void consume() {
if (products.isEmpty()) {
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("consume:" + products.remove(0));
}
private class Producer extends Thread {
@Override
public void run() {
while (!cancel) {
produce();
}
}
}
private class Consumer extends Thread {
@Override
public void run() {
while (!cancel) {
consume();
}
}
}
void cancel() {
cancel = true;
}
public ProducerAndConsumer() {
new Consumer().start();
new Producer().start();
}
public static void main(String[] args) {
new ProducerAndConsumer();
}
}本回答被提问者采纳