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