Active Object 模式是Command模式的一种,是实现多线程控制的一项古老技术 .
在《敏捷软件开发》这本书中描述的算法如下:
1、构造一个命令。(实现Command模式的一个命令)
2、将该命令放入Active Object Engine(也就是放入一个队列,LinkedList)
3、从该Engine取出一个命令,执行,若该命令没有执行过,设为执行过,然后将自己加入队列尾部,若执行过,判断该命令执行需要的事件发生没有,未发生,再将自己加入队列尾部。事件发生了,将需要执行的命令加入队列尾部。
那么到底什么是主动对象呢?传统上,所有的对象都是被动的代码段,对象中的代码是在对它发出方法调用的线程中执行的。也就是,调用线程(calling threads)被“借出”,以执行被动对象的方法。
而主动对象却不一样。这些对象持有它们自己的线程(甚或多个线程),并将这个线程用于执行对它们的任何方法的调用。因而,如果你想象一个传统对象,在里面封装了一个线程(或多个线程),你就得到了一个主动对象。
例如,设想对象“A”已在你的程序的main()函数中被实例化。当你的程序启动时,OS创建一个线程,以从main()函数开始执行。如果你调用对象A的任何方法,该线程将“流过”那个方法,并执行其中的代码。一旦执行完成,该线程返回调用该方法的点并继续它的执行。但是,如果”A”是主动对象,事情就不是这样了。在这种情况下,主线程不会被主动对象借用。相反,当”A”的方法被调用时,方法的执行发生在主动对象持有的线程中。另一种思考方法:如果调用的是被动对象的方法(常规对象),调用会阻塞(同步的);而另一方面,如果调用的是主动对象的方法,调用不会阻塞(异步的)。
分享到:
相关推荐
Active Object模式的主要目的是解决多线程环境中的同步问题,提高代码的可读性和可维护性。 在传统的并发编程中,线程直接调用其他线程中的方法,这可能导致数据竞争、死锁等问题。而Active Object模式则将方法调用...
ActiveObject模式的核心思想是将计算密集型任务封装在一个独立的执行线程中,从而解耦调用者和实际工作执行的线程,提高系统的响应性和可伸缩性。 在Java等面向对象语言中,通常使用Future和ExecutorService来实现...
当实体模型发生变化时,如在上面的例子中向`Person`实体添加`getAge()`和`setAge()`方法,ActiveObject能够智能地检测到模式差异,并仅执行所需的DDL语句来适应这些变化。例如,如果数据库中已存在`person`表,且...
Active Object (AO) 技术是一种用于构建并发程序的设计模式,它主要用于简化多线程编程中的复杂性,尤其适用于嵌入式系统和实时系统。在AO模型中,一个对象作为一个独立的实体来处理异步事件或任务请求,这些请求...
第13章 COMMAND模式和ACTIVE OBJECT模式 第14章 TEMPLATE METHOD模式和STRATEGY模式:继承与委托 第15章 FACADE模式和MEDIATOR模式 第16章 SINGLETON模式和MONOSTATE模式 第17章 NULL OBJECT模式 第18章 薪水支付...
薪水支付案例研究 第21章 COMMAND模式和ACTIVE OBJECT模式:多功能与多任务 第22章 TEMPLATE METHOD模式和STRATEGY模式:继承和委托 第23章 FACADE模式和MEDIATOR模式 第24章 SINGLETON模式和MONOSTATE模式 第25章 ...
第十三章 COMMAND模式和ACTIVE OBJECT模式 第十四章 TEMPLATE METHOD模式和STRATEGY模式:继承与委托 第十五章 FACADE模式和MEDIATOR模式 第十六章 SINGLETON模式和MONOSTATE模式 第十七章 NULL OBJECT模式 第十八章...
1. **Active Object模式**:Active Object是一种设计模式,它在并发编程中用于封装对象的执行上下文,确保了对象方法的执行顺序和线程安全。在"Active Object.pdf"中,可能详细解释了这种模式的概念、实现方式以及它...
`ActiveObject.cpp`和`ActiveObject.h`可能涉及到Active Object设计模式。这种模式用于在多线程环境中封装对象的行为,每个Active Object都有自己的工作线程,以处理来自其他线程的请求。这有助于避免线程间的直接...
Active Object模式是一种设计模式,主要用于解决并发和多线程环境中的问题,尤其是在分布式系统和异步编程中。这种模式将行为和状态封装在一个对象中,使得它能够独立于执行环境,确保了线程安全性和良好的响应性。...
第13章 COMMAND模式和ACTIVE OBJECT模式 第14章 TEMPLATE METHOD模式和STRATEGY模式:继承与委托 第15章 FACADE模式和MEDIATOR模式 第16章 SINGLETON模式和MONOSTATE模式 第17章 NULL OBJECT模式 第18章 薪水支付...
Python Active Object Server(PAOS)是一个开源项目,旨在提供一种机制,使得Python对象可以通过网络进行交互和事件通知。这个服务器不仅允许对象之间的通信,还包含了对事件处理和对象缓存的管理,使得开发者能够...
- 并发机制:Active Object 模式支持异步操作处理。 - 内存管理机制:智能指针等工具提高内存使用的安全性。 - CORBA 集成:支持与 Common Object Request Broker Architecture (CORBA) 的交互。 3. **ACE ...
- **定义**: Active Object模式允许对象异步执行操作,从而避免了同步调用带来的阻塞问题。 - **实现**: 通过使用`ACE_Task`类来实现Active Object。 - **结构**: 一个Task通常包含一个或多个线程,以及用于管理...
### 经典高级并发编程实践:Active-Object 模式详解 #### 一、引言 并发编程一直是软件开发中的一个重要领域,特别是在分布式系统、网络应用程序以及多线程服务器的设计中。随着现代计算机硬件的发展,多核处理器...