`
Teok
  • 浏览: 150678 次
  • 性别: 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  
楼主,可不可以共享代码啊。 看代码才能理解啊

相关推荐

    ActiveObject.pdf

    具体而言,当开发者定义了一个符合ActiveObject规范的Java接口或类时,该框架会自动生成与之对应的数据库表结构,并提供一系列API用于执行常见的数据库操作,如查询、插入、更新和删除记录。 #### 实现与示例 在...

    ActiveObject

    本文将深入探讨ActiveObject模式的原理、实现方式及其在实际项目中的应用。 一、ActiveObject模式概述 ActiveObject模式源于《Design Patterns: Elements of Reusable Object-Oriented Software》(即著名的GOF...

    ActiveObject模板

    ActiveObject模式的核心思想是将计算密集型任务封装在一个独立的执行线程中,从而解耦调用者和实际工作执行的线程,提高系统的响应性和可伸缩性。 在Java等面向对象语言中,通常使用Future和ExecutorService来实现...

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

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

    Java敏捷持久层-ROR-ActiveRecord持久层框架的Java实现

    以“ActiveObject”为例,这可能是某个Java实现ActiveRecord模式的框架的名字。它可能提供了类似于以下的API: ```java public class User extends ActiveObject { private String username; private String ...

    掌握Java中的观察者模式:实现动态交互的秘籍

    2. **Observer(观察者)**:观察主题的对象,它需要实现一个更新接口以接收主题的变更通知。 3. **ConcreteSubject(具体主题)**:实现主题接口的具体类,存储状态,并在状态改变时通知观察者。 4. **...

    一套简化Java持久层操作的类库

    至于压缩包内的文件"ActiveObject",这可能是一个关键类,类似于Ruby on Rails中的ActiveRecord,它可能是所有数据库操作的基础。这个类可能包含了一系列的方法,如save、find、update、delete等,用于处理与数据库...

    java模式_DAO模式[汇编].pdf

    DAO(Data Access Object)设计模式是Java开发中用于处理数据访问的一种常见模式,它结合了Data Accessor模式和Active Domain Object模式。DAO模式的主要目的是为了分离数据访问逻辑和业务逻辑,提高代码的可读性、...

    Patron-ActiveRecord:JAVA中的Active Record持久性模式示例

    "Patron-ActiveRecord" 这个标题指的是一个项目或者库,它在JAVA中实现了Active Record持久性模式。Active Record是面向对象数据库映射(Object-Relational Mapping, ORM)的一种实现方式,它将数据库操作与业务对象...

    Java企业设计模式(光盘)

    4. **锁文件(Lock File)**: 锁文件是另一种同步机制,常用于分布式系统中,通过创建一个文件表示资源已被占用,防止多个进程同时访问同一资源。在Java中,可以使用FileLock或者第三方库如Apache Commons Lang的...

    Active Object real-time OS:AO RTOS是基于Active Object并发模型的小型实时OS-开源

    总的来说,AO RTOS提供了一个基于Active Object和有限状态机的实时操作系统框架,通过开源方式促进开发者之间的合作,适用于各种嵌入式设备。其设计和实现考虑了资源受限的环境,同时也提供了高度的灵活性和可扩展性...

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

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

    java bean 资源

    例如,一个购物车程序可以使用Java Bean来实现商品添加功能,通过一个公共的`addItem`方法,JSP页面可以直接调用此方法来完成业务逻辑。如果需要增加新的功能,比如检查库存,可以在Java Bean中修改`addItem`方法,...

    Java多线程详解

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

    2022年Java线程模型缺陷Java教程.docx

    总的来说,2022年的Java线程模型缺陷教程讨论了Java在处理并发和异步操作时的不足,提出了将active_object模式集成到语言核心的“task”概念,以增强Java对面向对象并发编程的支持。这样的改进有望让Java开发者更...

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

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

    经典高级并发编程实践

    而在 Active-Object 模式下,对象的调用并不会立即触发方法执行,而是将请求排队,由一个独立的线程池异步处理这些请求。这种方式的好处在于可以大大简化对象之间的同步问题,并提高系统的并发能力。 #### 三、...

    关于dao设计模式学习资料

    - **ActiveDomainObject模式**:实现了业务数据的对象化封装。在这个模式下,业务数据以对象的形式存在,而不是简单的数据结构或记录集合。这种方式使得数据更易于管理,并且更符合面向对象编程的原则。 这两种模式...

Global site tag (gtag.js) - Google Analytics