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