`
Teok
  • 浏览: 147767 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ActiveObject模式的一个java实现

阅读更多
1. 什么是ActiveObject并发模型?
引用
This paper describes the Active Object pattern, which decou-
ples method execution from method invocation in order to
simplify synchronized access to an object that resides in its
own thread of control. The Active Object pattern allows one
or more independent threads of execution to interleave their
access to data modeled as a single object. A broad class of
producer/consumer and reader/writer applications are well-
suited to this model of concurrency. This pattern is com-
monly used in distributed systems requiring multi-threaded
servers. In addition, client applications, such as window-
ing systems and network browsers, employ active objects to
simplify concurrent, asynchronous network operations.

这是它的定义(为了防止翻译产生的理解偏差,我直接引用原文)。

2. 为什么要介绍?
事实上,我的工作是在Android平台开发。以前我以为,在Android平台上很少有并发的场景,但是,我们其中一款软件的实现,竟然用到了这个并发模型。我先不去揣测这款软件复杂架构的必要性,但是至少,它目前工作的很好,也许在未来,某些新功能的引入(party mode)之后,这种架构需要适应这种多人模式下的并发场景。

3.按照协作图,来实现。


明白了模型中各个元素的协作关系,我来假设一种应用场景:一款基于网络的远程媒体播放器,例如我可以通过wifi把我本地的媒体播放到WMP12上去。

下面给出一个基本实现:


demo包定义了client端,elements包中包含所有active object模型元素的实现,impl包是模拟一个远程播放器的控制器。(目前实现并不完整,swing的界面和模拟远程控制都需要改进)

4.思考
a。在现实的场景中,我们通常会对某个模型或者模式进行改造,使它切合实际场景。我的这个简单实现中,砍掉了future的部分,虽然有些代码中暂时留有future的接口。
b。复杂的架构后面肯定有它深刻的道理。功底不深厚的架构师,想架构复杂,也挺难的吧。但是,刚才所说的复杂,等到清楚的明白了应用场景,可能就会变得那么需要。所以在接触一个新的项目的时候,摆好心态,弄清上下文,多对项目功能模块的实现进行揣摩,多思考,为什么他这么做,换做自己会怎么做,利弊都是什么,谁更优。。
c。平凡简单的工作中,其实总是蕴含着各种智慧。忙碌不一定是积累,清闲不一定是荒废。在一份看起来清闲工作的中,尽快找到自己的方向,不断发掘自身的可提高点,花点时间处理好生活中的事情。这不一定就是坏事。外企宽松的环境下,它的生存潜规则就是,每个人都要积极主动。
  • 大小: 33.8 KB
  • 大小: 29.7 KB
分享到:
评论
1 楼 chxiaowu 2013-04-18  
楼主,可不可以共享代码啊。 看代码才能理解啊

相关推荐

    java多线程设计模式详解(PDF及源码)

    去睡觉吧 第11章 Thread-Specific Storage——每个线程的保管箱 第12章 Active Object——接受异步消息的主动对象 总结 多线程程序设计的模式语言 附录A 练习问题的解答 附录B Java的内存模型 附录C Java线程的...

    敏捷软件开发:原则、模式与实践

    第13章 COMMAND模式和ACTIVE OBJECT模式 第14章 TEMPLATE METHOD模式和STRATEGY模式:继承与委托 第15章 FACADE模式和MEDIATOR模式 第16章 SINGLETON模式和MONOSTATE模式 第17章 NULL OBJECT模式 第18章 薪水...

    Java多线程详解

    1、Single Threaded Execution ———— 能通过这座桥的,只有一个人 2、Immutable ———— 想破坏它也没办法 3、Guarded Suspension ———— 要等到我们准本好哦 4、Balking ———— 不需要的话,就算了吧 5、...

    敏捷软件开发原则、模式与实践 C#版

    薪水支付案例研究 第21章 COMMAND模式和ACTIVE OBJECT模式:多功能与多任务 第22章 TEMPLATE METHOD模式和STRATEGY模式:继承和委托 第23章 FACADE模式和MEDIATOR模式 第24章 SINGLETON模式和MONOSTATE模式 第25章 ...

    敏捷软件开发:原则、模式与实践.pdf 高清

    第十三章 COMMAND模式和ACTIVE OBJECT模式 第十四章 TEMPLATE METHOD模式和STRATEGY模式:继承与委托 第十五章 FACADE模式和MEDIATOR模式 第十六章 SINGLETON模式和MONOSTATE模式 第十七章 NULL OBJECT模式 第十八章...

    敏捷软件开发:原则、模式与实践.pdf

    第13章 COMMAND模式和ACTIVE OBJECT模式 第14章 TEMPLATE METHOD模式和STRATEGY模式:继承与委托 第15章 FACADE模式和MEDIATOR模式 第16章 SINGLETON模式和MONOSTATE模式 第17章 NULL OBJECT模式 第18章 薪水...

    针对JPA的活动记录模式ActiveJPA.zip

    ActiveJPA基于JPA,提供了Martin Fowler所提出的活动记录模式(Active Record pattern)的Java实现。借助于ActiveJPA,模型本身会作为DAO并与数据库交互,这样就不需要额外的代码作为数据访问层了。 ActiveJPA使用到...

    Maven权威指南 很精典的学习教程,比ANT更好用

    一个“项目”的概念模型 1.6. Maven是Ant的另一种选择么? 1.7. 比较Maven和Ant 1.8. 总结 2. 安装和运行Maven 2.1. 验证你的Java安装 2.2. 下载Maven 2.3. 安装Maven 2.3.1. 在Mac OSX上安装Maven ...

    C#微软培训资料

    第三章 编写第一个应用程序 .20 3.1 Welcome 程序 .20 3.2 代 码 分 析 .20 3.3 运 行 程 序 .23 .4 添 加 注 释 .25 3.5 小 结 .27 第二部分 C#程序设计基础.28 第四章 数 据 类 型 .28 4.1 值 类 型...

    Oracle数据库管理员技术指南

    指定一个查询 3.4.4 导出/导入预计算优化程序统计 数据 3.4.5 可移动表空间 3.5 回顾 第4章 设计高可用性数据库 4.1 如何发现和保护“致命的弱点” 4.2 复用数据库控制文件 4.3 在硬件级上镜像控制文件 ...

Global site tag (gtag.js) - Google Analytics