WEB开发网
开发学院软件开发Java Active Object 并发模式在 Java 中的应用 阅读

Active Object 并发模式在 Java 中的应用

 2010-08-06 00:00:00 来源:WEB开发网   
核心提示: 清单 7. Active Object 使用MQ_Proxymessage_queue;//Optioin1.Obtainfutureandblockthreaduntilmessagearrives.Message_Futurefuture=message_queue.get();Messag


清单 7. Active Object 使用

MQ_Proxy message_queue; 
 
//Optioin 1. Obtain future and block thread until message arrives. 
Message_Future future = message_queue.get(); 
Message msg = future.result(); 
//Handle received message here 
handle(msg); 
 
//2. Obtain a future (does not block the client). 
Message_Future future = message_queue.get (); 
 
//The current thread is not blocked, do something else here... 
//Evaluate future and block if result is not available. 
Message msg = future.result (); 
//Handle received message here 
handle(msg); 

从清单 7 可以看到,MQ_Proxy 对于调用者而言,和一个普通的 C++ 定义的对象并没有区别,并发的实现细节已经被隐藏。

Java 对 Active Object 支持

Java JDK 1.3 引入了 java.util.Timer 和 java.util.TimerTask,提供了对 timer-based 并发任务支持,Timer 和 TimerTask 可以看作是 Active Object 设计模式在 Java 中的实现。不过,在这里我们不打算过多讨论 Timer 及其 TimerTask。由于 Timer 和 TimerTask 的缺陷性,例如 Timer 使用单线程执行 TimerTask 导致的 Task 调度时间的不精确性等问题。从 Java1.5 开始,Java 建议使用 ScheduledThreadPoolExecutor 作为 Timer 的替代。

在这里,我们讨论一下自 Java1.5 引入的 Executor Framework。Java1.5 的 Executor Framework 可以看作是 Active Object 设计模式在 Java 中的体现。不过 Java 的 Executor Framework 极大地简化了我们前面所讨论的 Active Object 所定义的模式。

上一页  4 5 6 7 8 9 10  下一页

Tags:Active Object 并发

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接