生产者和消费者问题是线程模型中的经典问题:生产者和消费者在同一时间段内共用同一个存储空间,生产者往存储空间中添加产品,消费者从存储空间中取走产品,当存储空间为空时,消费者阻塞,当存储空间满时,生产者阻塞。
通过平衡生产者的生产能力和消费者的消费能力来提升整个系统的运行效率,这是生产者消费者模型最重要的作用 。
/**
* 生产者消费者模型
* 通过wait、notify实现
* 缓冲区满和为空时都调用wait()方法等待,当生产者生产了一个产品或者消费者消费了一个产品之后会唤醒所有线程。
*/
public class ProducerConsumer1 {
private static Integer count = 0;
private static final Integer FULL = 10;//缓冲区大小
private static String LOCK = "lock";
public static void main(String[] args) {
ProducerConsumer1 producerConsumer = new ProducerConsumer1();
new Thread(producerConsumer.new Producer()).start();
new Thread(producerConsumer.new Producer()).start();
new Thread(producerConsumer.new Producer()).start();
new Thread(producerConsumer.new Consumer()).start();