[Java基础]生产者和消费者模式概述与案例分析

Posted Wecccccccc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Java基础]生产者和消费者模式概述与案例分析相关的知识,希望对你有一定的参考价值。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

代码如下:

package BoxPack01;

public class Box {
    private int milk;
    private boolean state = false;

    public synchronized void put(int milk)
    {
        if (state)
        {
            try {
                wait();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        this.milk = milk;
        System.out.println("送奶工将第"+this.milk+"瓶奶放入奶箱");

        state = true;

        notifyAll();

    }

    public synchronized void get()
    {
        if (!state)
        {
            try {
                wait();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        System.out.println("用户拿到第"+this.milk+"瓶奶");

        state = false;

        notifyAll();
    }

}

package BoxPack01;

public class Producer implements Runnable{

    private Box b;

    public Producer(Box b) {
        this.b = b;
    }

    @Override
    public void run() {
        for (int i = 1;i<=5;i++)
        {
            b.put(i);
        }
    }
}

package BoxPack01;

public class Customer implements Runnable{
    private Box b;
    public Customer(Box b) {
        this.b = b;
    }

    @Override
    public void run() {
        while(true){
            b.get();
        }

    }
}

package BoxPack01;

public class BoxDemo {
    public static void main(String[] args)
    {
        Box b = new Box();
        Producer p = new Producer(b);

        Customer c = new Customer(b);

        Thread t1 = new Thread(p);
        Thread t2 = new Thread(c);

        t1.start();
        t2.start();
    }

}

以上是关于[Java基础]生产者和消费者模式概述与案例分析的主要内容,如果未能解决你的问题,请参考以下文章

java生产者与消费者模式

java多线程基本概述——简单生产者消费者模式

Java设计模式之观察者模式(生产者与消费者模式)

基于Java 生产者消费者模式(详细分析)

JAVA SE基础篇60.线程协作

Day806.生产者消费者模式 -Java 性能调优实战