zoukankan      html  css  js  c++  java
  • 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秒后出现

  • 相关阅读:
    oracle笔记
    log4j配置
    前段页面性能标准
    递归多叉树遍历
    // 获取元素拒顶部高度
    window.parent
    webpack打包
    vue源码解析推荐文章
    在vue项目中。artTemplate引入失败问题,修改源码
    webpack打包css前缀自动取消,以及样式冲突问题
  • 原文地址:https://www.cnblogs.com/shamgod/p/4588143.html
Copyright © 2011-2022 走看看