牵着老婆满街逛

严以律己,宽以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

Active Object 模式

 Active Object 模式是Command模式的一种,是实现多线程控制的一项古老技术 .
在《敏捷软件开发》这本书中描述的算法如下:
1、构造一个命令。(实现Command模式的一个命令)
2、将该命令放入Active Object Engine(也就是放入一个队列,LinkedList)
3、从该Engine取出一个命令,执行,若该命令没有执行过,设为执行过,然后将自己加入队列尾部,若执行过,判断该命令执行需要的事件发生没有,未发生,再将自己加入队列尾部。事件发生了,将需要执行的命令加入队列尾部。


优点:

1:减弱了comsumer的复杂性,因为只有一个comsumer了

2:可以自己对命令设计一下优先级,对命令可以优先级调度

3:使用了Command Pattern,所以可以保存命令再执行

缺点:
只用一个线程在执行,如果其中一个命令很耗时,将影响其它命令的执行。

    解决办法有两个:
        1:可以使用调度算法,将按照耗时来排序,再加上排的越久,优先级越高;

        2:在一个程序中,使用多个活动对象,也相当于有多个线程在执行了,在一定程度上能够解决效率的问题。




参考
http://flowercat.javaeye.com/blog/93665
http://blog.csdn.net/cn854/archive/2009/07/27/4385552.aspx

posted on 2010-02-28 16:15 杨粼波 阅读(1035) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理