一、概述
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秒后出现