多线程-生产消费者模式
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(); } } }
运行结果: