并发协作模型 “ 生产者 / 消费者模式 ” -----信号灯法

Posted 做个机灵鬼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了并发协作模型 “ 生产者 / 消费者模式 ” -----信号灯法相关的知识,希望对你有一定的参考价值。

观众演员实例

//生产者消费者问题,信号灯法,标志位解决
public class TextPc02 {
    public static void main(String[] args) {
        Tv tv = new Tv();
        new Actor(tv).start();
        new Watcher(tv).start();
    }
}
//演员
class Actor extends Thread{
    Tv tv;
    public Actor(Tv tv){
        this.tv = tv;
    }
    @Override
    public void run() {
        for (int i = 0; i < 20; i++) {
           if(i%2==0){
               tv.play("斗罗大陆");
           }else {
               tv.play("抖音记录美好生活");
           }
        }
    }
}


//观众
class Watcher extends Thread{
    Tv tv;
    public Watcher(Tv tv){
        this.tv = tv;
    }
    @Override
    public void run() {
        for (int i = 0; i < 20; i++) {
            tv.see();
        }
    }
}

//节目
class Tv{
    //节目的名字
    String vioce;
    //定义一个标志位
    boolean flag = true;
    //表演节目
    public synchronized void play(String vioce){
       if(!flag){
           try {
               this.wait();
           } catch (InterruptedException e) {
               e.printStackTrace();
           }
       }
        //表演节目
        System.out.println("表演了:"+vioce);
        this.notifyAll();//通知唤醒
        this.vioce = vioce;//更新节目状态

        this.flag = !this.flag;




    }
    //观看节目
    public synchronized void see(){
        if(flag){
            try {
                this.wait();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        //观看节目
        System.out.println("观看了:"+vioce);
        this.notifyAll();
        this.flag = !this.flag;

    }
}

以上是关于并发协作模型 “ 生产者 / 消费者模式 ” -----信号灯法的主要内容,如果未能解决你的问题,请参考以下文章

多线程_并发协作

Java多线程之并发协作生产者消费者设计模式

Java多线程之并发协作生产者消费者设计模式

Java并发程序设计设计模式与并发之生产者-消费者模式

线程协作---生产者消费者模式之“管程法”实现

多线程生产者消费者模型