`
锅巴49
  • 浏览: 160832 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

用观查者模式传递线程状态

阅读更多

场景,某action把任务分配给N个线程,当线程完成后通知action,action返回。

 

package com.koubei.Observable;

import java.util.Observable;
import java.util.Observer;

public class Action implements Observer{

    private int count;
    
    public String execute() throws InterruptedException{
        
        new Thread(new MadeCardThread(10,this)).start();
        new Thread(new MadeCardThread(10,this)).start();
        new Thread(new MadeCardThread(10,this)).start();
        new Thread(new MadeCardThread(10,this)).start();
        
        while(count != 40){
            Thread.sleep(1000);
        }
        System.out.println("========= end =========");
        return "success";
    }

    
    public void update(Observable o, Object arg) {
        // TODO Auto-generated method stub
        if(arg instanceof Integer){
            count = count + (Integer)arg;
        }
    }
    
    public static void main(String[] args) throws InterruptedException {
        (new Action()).execute();
    }
}

class MadeCardThread extends Observable implements Runnable {

    private int count;
    
    
    public MadeCardThread(int count,Observer observer){
        this.addObserver(observer);
        this.count = count;
    }
    
    public void run() {
        // TODO Auto-generated method stub
        for(int i=0; i<count; i++){
            System.out.println(Thread.currentThread().getId() + " : " + i);
        }
        this.setChanged();
        this.notifyObservers(count);
    }
    
}

 

0
3
分享到:
评论
1 楼 mercyblitz 2010-07-23  
运行结果貌似不能反映场景。

相关推荐

    深入浅出设计模式(中文版)

    5.7ObserverPattern(观察者模式) 236 5.7.1定义 236 5.7.2现实例子——拉登现身了 238 5.7.3C#实例——猫和老鼠 238 5.7.4C#实例——股票变化 241 5.7.5Java实例——监控系统 245 5.7.6优势和缺陷 248 ...

    深入浅出设计模式(中文版电子版)

    5.7ObserverPattern(观察者模式) 236 5.7.1定义 236 5.7.2现实例子——拉登现身了 238 5.7.3C#实例——猫和老鼠 238 5.7.4C#实例——股票变化 241 5.7.5Java实例——监控系统 245 5.7.6优势和缺陷 248 ...

    Java并发编程(学习笔记).xmind

    生产者-消费者模式 中断的处理策略 传递InterruptedException 恢复中断,让更高层的代码处理 PriorityQueue(非并发) ConcurrentSkipListMap 替代同步的SortedMap ...

    ZeroMQ 雲時代急速消息通訊庫

    ZeroMQ的维护者Pieter Hintjens带你观察现实世界的应用程序,并用C语言编写的扩展例子帮助你使用ZeroMQ的API、套接字和模式。了解如何使用特定的?MQ编程技术,构建多线程应用程序,并创建自己的消息传递架构。你会学...

    Linux高性能服务器编程

    8.5.1 半同步半异步模式 8.5.2 领导者追随者模式 8.6 有限状态机 8.7 提高服务器性能的其他建议 8.7.1 池 8.7.2 数据复制 8.7.3 上下文切换和锁 第9章 IO复用 9.1 select系统调用 9.1.1 select API 9.1.2...

    超级有影响力霸气的Java面试题大全文档

    Stateless Session Bean 虽然也是逻辑组件,但是他却不负责记录使用者状态,也就是说当使用者呼叫 Stateless Session Bean 的时候,EJB Container 并不会找寻特定的 Stateless Session Bean 的实体来执行这个 method...

    java 面试题 总结

    Stateless Session Bean 虽然也是逻辑组件,但是他却不负责记录使用者状态,也就是说当使用者呼叫 Stateless Session Bean 的时候,EJB Container 并不会找寻特定的 Stateless Session Bean 的实体来执行这个 method...

    精通并发与netty视频教程(2018)视频教程

    74_Netty对于异步读写操作的架构思想与观察者模式的重要应用 75_适配器模式与模板方法模式在入站处理器中的应用 76_Netty项目开发过程中常见且重要事项分析 77_Java NIO Buffer总结回顾与难点拓展 78_Netty数据容器...

    java面试800题

    template模板方法模式、memento备忘录模式、observer观察者模式、command命令模式、state状态模式、strategy策略模式、mediator调停者模式、interpreter解释器模式、visitor访问者模式、chain of responsibility责任...

    精通并发与netty 无加密视频

    第74讲:Netty对于异步读写操作的架构思想与观察者模式的重要应用 第75讲:适配器模式与模板方法模式在入站处理器中的应用 第76讲:Netty项目开发过程中常见且重要事项分析 第77讲:Java NIO Buffer总结回顾与...

    windows驱动开发技术详解-part2

     4.2.5 用DeviceTree观察驱动对象和设备对象  4.3 WDM式驱动的基本结构  4.3.1 物理设备对象与功能设备对象  4.3.2 WDM驱动的入口程序  4.3.3 WDM驱动的AddDevice例程  4.3.4 DriverUnload例程  4.3.5 ...

    Windows驱动开发技术详解的光盘-part1

     4.2.5 用DeviceTree观察驱动对象和设备对象  4.3 WDM式驱动的基本结构  4.3.1 物理设备对象与功能设备对象  4.3.2 WDM驱动的入口程序  4.3.3 WDM驱动的AddDevice例程  4.3.4 DriverUnload例程  4.3.5 ...

    一款Android平台的LivaData的消息总线框架

    : 粘性事件背景 LivaData 的设计之初是为了数据的获取,因此无论是观察开始之前产生的数据,还是观察开始之后产生的数据,都是用户需要的数据,只要是有数据,当 LifeCycle 处于激活状态,数据就会传递给观察者。...

Global site tag (gtag.js) - Google Analytics