package senior;
public class SignalLamp {
public static void main(String[] args) {
Tv tv = new Tv();
new Player(tv).start();
new Watcher(tv).start();
}
}
class Player extends Thread{
Tv tv;
public Player(Tv tv) {
super();
this.tv = tv;
}
@Override
public 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;
public Watcher(Tv tv) {
super();
this.tv = tv;
}
@Override
public 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) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
System.out.println("演员表演了"+voice);
this.notify();
this.voice=voice;
this.flag=!flag;
}
public synchronized void watch() {
// TODO Auto-generated method stub
if (flag) {
try {
this.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
System.out.println("观看了"+voice);
this.notify();
this.voice=voice;
this.flag=!flag;
}
}
演员表演了飞跃疯人院
观看了飞跃疯人院
演员表演了血战钢锯岭
观看了血战钢锯岭
演员表演了飞跃疯人院
观看了飞跃疯人院
演员表演了血战钢锯岭
观看了血战钢锯岭
演员表演了飞跃疯人院
观看了飞跃疯人院
演员表演了血战钢锯岭
观看了血战钢锯岭
演员表演了飞跃疯人院
观看了飞跃疯人院
演员表演了血战钢锯岭
观看了血战钢锯岭
演员表演了飞跃疯人院
观看了飞跃疯人院
演员表演了血战钢锯岭
观看了血战钢锯岭
演员表演了飞跃疯人院
观看了飞跃疯人院
演员表演了血战钢锯岭
观看了血战钢锯岭
演员表演了飞跃疯人院
观看了飞跃疯人院
演员表演了血战钢锯岭
观看了血战钢锯岭
演员表演了飞跃疯人院
观看了飞跃疯人院
演员表演了血战钢锯岭
观看了血战钢锯岭
演员表演了飞跃疯人院
观看了飞跃疯人院
演员表演了血战钢锯岭
观看了血战钢锯岭
演员表演了飞跃疯人院
观看了飞跃疯人院
演员表演了血战钢锯岭
观看了血战钢锯岭