Java-马士兵设计模式学习笔记-观察者模式-OOD线程
2015-06-19 11:27
1036 查看
一、概述
1.情景:孩子睡觉,醒后要吃东西,用java模拟此情况
2.设计:child类,Dad类,都继承Runnable,dad线程监视child线程(缺点:因为要监视,所以耗cup资源)
二、代码
Test.java
运行结果:
3秒后出现
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秒后出现
相关文章推荐
- 什么是Java集合API?
- jdk:Arrays.asList&Collection.toArray
- Java文件打包成exe,在未配置安装JDK和未配置的电脑上运行
- eclipse+php+wamp配置
- Eclipse中SVN切换用户名
- eclipse 操作笔记
- String format specifier
- Java数据类型和MySql数据类型对应表
- JAVA中Action层, Service层 ,modle层 和 Dao层的功能区分
- java定义和实现接口
- java集合报错:java.lang.UnsupportedOperationException
- 几个比较难理解的JAVA关键字总结
- java版本无法改变
- java组件的细节处理
- 11.Spring通过工厂方法配置Bean
- 简易Java(03):Java类何时以及如何加载并初始化?
- java String转化为时间和日期
- Struts2配置文件讲解
- 【Eclipse/MyEclipse常用设置】
- java线程池