Java-马士兵设计模式学习笔记-观察者模式-OOD线程
一、概述
1.情景:孩子睡觉,醒后要吃东西,用java模拟此情况
2.设计:child类,Dad类,都继承Runnable,dad线程监视child线程(缺点:因为要监视,所以耗cup资源)
二、代码
Test.java
class Child implements Runnable {
private boolean wakenUp = false;
public boolean isWakenUp() {
return wakenUp;
}
public void setWakenUp(boolean wakenUp) {
this.wakenUp = wakenUp;
}
public void wakeUp(){
wakenUp = true;
}
@Override
public void run() {
try {
Thread.sleep(3000);
} catch (Exception e) {
e.printStackTrace();
}
wakeUp();
}
}
class Dad implements Runnable{
Child c;
public Dad(Child c) {
this.c = c;
}
@Override
public void run() {
while(!c.isWakenUp()){
try {
Thread.sleep(1000);
} catch (Exception e) {
e.printStackTrace();
}
}
feed(c);
}
private void feed(Child c) {
System.out.println("feed child");
}
}
public class Test {
public static void main(String[] args) {
Child c = new Child();
Dad d = new Dad(c);
new Thread(c).start();
new Thread(d).start();;
}
}
运行结果:
3秒后出现

You can do anything you set your mind to, man!

浙公网安备 33010602011771号