Java设计模式之生产者消费者设计模式

第一步:商品类

package Java设计模式.生产者消费者设计模式;

public class Good {
    String name;
    double price;

    public Good(String name, double price) {
        this.name = name;
        this.price = price;
    }

    @Override
    public String toString() {
        return "Good{" +
                "name='" + name + '\'' +
                ", price=" + price +
                '}';
    }
}

第二步:判断是否有产品类

package Java设计模式.生产者消费者设计模式;

public class Flag {
    //是否生成产品
    public static boolean shouldProduct = true;
}

第三步:生产者类

package Java设计模式.生产者消费者设计模式;

public class Producer extends Thread{
    private Good good;

    public Producer(Good good) {
        this.good = good;
    }

    @Override
    public void run() {
        while (true) {
            synchronized ("") {
                if(Flag.shouldProduct==true)
                {
                    this.good.name="炒鱿鱼";
                    System.out.println("生产者【"+Thread.currentThread().getName()+"】生成了一个产品【"+this.good.name+"】");
                    Flag.shouldProduct=false;
                    "".notifyAll();
                }
                else
                {
                    try {
                        "".wait();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    }
}

第四步:消费者类

package Java设计模式.生产者消费者设计模式;

public class Consumer implements Runnable {
    private  Good good;

    public Consumer(Good good) {
        this.good = good;
    }
    @Override
    public void run() {
        while (true)
        {
            synchronized ("")
            {
                if(Flag.shouldProduct==false)
                {
                    System.out.println("消费者【"+Thread.currentThread().getName()+"】消费了一个产品【"+this.good.name+"】");
                    Flag.shouldProduct=true;
                    "".notifyAll();
                }
                else
                {
                    try {
                        "".wait();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    }
}

第五步:测试类

package Java设计模式.生产者消费者设计模式;

public class Test {
    public static void main(String[] args) {
        Good good=new Good("炒鱿鱼",2000);
        Thread p1=new Thread(new Producer(good),"王大");
        Thread p2=new Thread(new Producer(good),"李二");

        Thread c1=new Thread(new Consumer(good),"张三");
        Thread c2=new Thread(new Consumer(good),"麻丝");
        p1.start();
        p2.start();
        c1.start();
        c2.start();
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_43562705/article/details/89438489