package com.wuming.thread;//测试生产者消费者问题2:信号灯法,标志位解决 public class TestPc2 {public static void main(String[] args) {TV tv = new TV();new Player(tv).start();new Watcher(tv).start();} } //生产者-->演员 class Player extends Thread{TV tv;/*** Allocates a new {@code Thread} object. This constructor has the same* effect as {@linkplain #Thread(ThreadGroup, Runnable, String) Thread}* {@code (null, null, gname)}, where {@code gname} is a newly generated* name. Automatically generated names are of the form* {@code "Thread-"+}<i>n</i>, where <i>n</i> is an integer.*/public Player(TV tv) {this.tv = tv;}@Overridepublic void run() {for (int i = 0; i < 20; i++) {if (i%2==0){this.tv.play("快乐大本营播放中");}else{this.tv.play("抖音:记录美好生活");}}} } //消费者-->观众 class Watcher extends Thread{TV tv;/*** Allocates a new {@code Thread} object. This constructor has the same* effect as {@linkplain #Thread(ThreadGroup, Runnable, String) Thread}* {@code (null, null, gname)}, where {@code gname} is a newly generated* name. Automatically generated names are of the form* {@code "Thread-"+}<i>n</i>, where <i>n</i> is an integer.*/public Watcher(TV tv) {this.tv=tv;}@Overridepublic void run() {for (int i = 0; i < 20; i++) {tv.watch();}} } //产品-->节目 class TV{//演员表演,观众等待//观众观看,演员等待String voice;//表演的节目boolean flag=true;//表演public synchronized void play(String voice){if (!flag){try {this.wait();} catch (InterruptedException e) {e.printStackTrace();}}System.out.println("演员表演了"+voice);//通知观众观看this.notifyAll();//通知唤醒this.voice=voice;this.flag=!this.flag;}//观看public synchronized void watch(){if (flag){try {this.wait();} catch (InterruptedException e) {e.printStackTrace();}}System.out.println("观看了:"+voice);//通知演员表演this.notifyAll();this.flag=!flag;} }
演员表演了快乐大本营播放中
观看了:快乐大本营播放中
演员表演了抖音:记录美好生活
观看了:抖音:记录美好生活
演员表演了快乐大本营播放中
观看了:快乐大本营播放中
演员表演了抖音:记录美好生活
观看了:抖音:记录美好生活
演员表演了快乐大本营播放中
观看了:快乐大本营播放中
演员表演了抖音:记录美好生活
观看了:抖音:记录美好生活
演员表演了快乐大本营播放中
观看了:快乐大本营播放中
演员表演了抖音:记录美好生活
观看了:抖音:记录美好生活
演员表演了快乐大本营播放中
观看了:快乐大本营播放中
演员表演了抖音:记录美好生活
观看了:抖音:记录美好生活
演员表演了快乐大本营播放中
观看了:快乐大本营播放中
演员表演了抖音:记录美好生活
观看了:抖音:记录美好生活
演员表演了快乐大本营播放中
观看了:快乐大本营播放中
演员表演了抖音:记录美好生活
观看了:抖音:记录美好生活
演员表演了快乐大本营播放中
观看了:快乐大本营播放中
演员表演了抖音:记录美好生活
观看了:抖音:记录美好生活
演员表演了快乐大本营播放中
观看了:快乐大本营播放中
演员表演了抖音:记录美好生活
观看了:抖音:记录美好生活
演员表演了快乐大本营播放中
观看了:快乐大本营播放中
演员表演了抖音:记录美好生活
观看了:抖音:记录美好生活