管程法:
A类线程将生产好的数据放入缓冲区,B类线程从缓冲区拿出数据。
该方法需要定义一个缓冲区,用缓冲区存放共享资源,管理共享资源。
以下为代码示例:
public class ProducerConsumer {
public static void main(String[] args) {
SynContainer synContainer = new SynContainer();
Producer producer = new Producer(synContainer);
Consumer consumer = new Consumer(synContainer);
producer.start();
consumer.start();
}
}
//生产者
class Producer extends Thread{
SynContainer synContainer;
public Producer(SynContainer synContainer){
this.synContainer = synContainer;
}
@Override
public void run() {
for (int i = 1; i < 100; i++) {
try {
synContainer.push(new Chicken(i));
System.out.println("生产了"+i+"只鸡");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
//消费者