多线程-生产消费者模式

package com.thread.cusproform;

```java
/**
 * @Author yg_wu
 * @Description //生产消费者模式,生产一个商品消费一个商品
 * @Date 2021/8/6 10:40
 **/
public class CPFTTest {
          
   
    public static void main(String[] args) {
          
   
        MessageObject messageObject = new MessageObject(true);

        ProT proT = new ProT(messageObject);
        CusT cusT = new CusT(messageObject);

        new Thread(cusT).start();
        new Thread(proT).start();
    }
}
/**
 * @Author yg_wu
 * @Description //生产完成开关对象
 * @Date 2021/8/6 10:43
 **/
class MessageObject {
          
   
    private boolean flag;

    public MessageObject(boolean flag) {
          
   
        this.flag = flag;
    }

    public void setFlag(boolean flag) {
          
   
        this.flag = flag;
    }

    public boolean isFlag() {
          
   
        return flag;
    }
    public void function() throws Exception{
          
   
        synchronized (MessageObject.class) {
          
   
            if (flag) {
          
   
                Thread.sleep(3000);
                System.out.println("生产者生产了一个商品");
                Thread.sleep(1000);
                flag = false;
            } else {
          
   
                Thread.sleep(2000);
                System.out.println("消费者消费了一个商品");
                flag = true;
            }
        }
    }
}

//生产线程负责调用生产线不断生产
class ProT extends Thread {
          
   
    public MessageObject mo;

    public ProT(MessageObject mo) {
          
   
        this.mo = mo;
    }

    @Override
    public void run() {
          
   
        try {
          
   
            while (true){
          
   
                mo.function();
            }
        } catch (Exception e) {
          
   
            e.printStackTrace();
        }
    }
}

//消费线程辅助调用消费线不断消费
class CusT extends Thread {
          
   
    public MessageObject mo;

    public CusT(MessageObject mo) {
          
   
        this.mo = mo;
    }

    @Override
    public void run() {
          
   
        try {
          
   
            while (true) {
          
   
                mo.function();
            }
        } catch (Exception e) {
          
   
                e.printStackTrace();
        }
    }
}

运行结果:

经验分享 程序员 微信小程序 职场和发展