一步步學習java併發程式設計模式之Active Object模式(一)什麼是active object
最近在閱讀世界級軟體開發大師Robert C. Martin的名著《敏捷軟體開發原則、模式與實踐》,在講述命令模式的時候,Bob大叔提到了命令模式的一個使用場景:Active Object。剛開始不知道這是什麼,看例子DelayedTyper的時候,也是雲裡霧裡不太理解。百度了一下後,才知道Active Object是併發程式設計一種常用的模式。看了 別人寫的部落格,也是半知半解,打算寫一系列關於該模式的部落格,記錄自己的學習過程和理解,與大家交流。
Active Object模式其實就是future模式,JDK已經內建了對該模式的支援。該模式的核心是通過解耦方法的呼叫(invocation)和方法的執行(execution)來提高程式的併發度,方法呼叫發生在呼叫者執行緒上下文中,而方法的執行發生在獨立於呼叫者執行緒的 Active Object 執行緒上下文中。說白了,就是為了減少方法A呼叫方法B必須等待的時間。考慮如下程式碼片段:
// 呼叫天氣服務,該方法耗時比較長
WeatherResult result = WeatherService.getWeatherInfo("廣東深圳", "2014-03-14");
// 1.列印使用者資訊
System.out.println("current user is:aty");
// 2.列印留言資訊
System.out.println("concurrent is difficult but interesting.");
// 3.列印天氣資訊
System.out.println(result);
由於呼叫天氣計算服務花費的時間比較長,直接的方法呼叫(方法的呼叫和執行在同一個執行緒中執行),會導致當前執行緒阻塞,後續程式碼在計算結果返回之前不能執行。而實際上,列印使用者資訊和留言資訊,是不依賴於天氣計算的。因此普通的方法呼叫,會導致程式併發能力下降,響應時間增加。使用Active Object模式,就是為了解決這種阻塞問題,提高程式的併發度。
以下2篇文章都是講述該模式的原理和實現的,雖然寫的很好,但是個人覺得有點抽象,程式碼也是基於C++的,剛開始學習比較難懂,需要花費較大的功夫才能掌握。剛好自己也在學習該併發模式,打算按照自己的理解,一步步寫這一系列的部落格。希望能加深自己的理解,也希望能幫助大家更好的理解Active Object模式,在討論和交流中進步。
附
http://www.ibm.com/developerworks/cn/java/j-lo-activeobject/
相關文章
- Java多執行緒程式設計模式實戰指南:Active Object模式(上)Java執行緒程式設計設計模式Object
- Java多執行緒程式設計模式實戰指南:Active Object模式(下)Java執行緒程式設計設計模式Object
- 設計模式-COMMOND PATTERN (ACTIVE OBJECT PATTERN是一種特殊的COMMOND PATTERN)設計模式Object
- 【Java併發程式設計】一、為什麼需要學習併發程式設計?Java程式設計
- Page Object設計模式Object設計模式
- EJB設計模式之Data Transfer Object (轉)設計模式Object
- Java多執行緒程式設計模式實戰指南(二):Immutable Object模式Java執行緒程式設計設計模式Object
- Zabbix學習(五)之Zabbix Agent Active 主動模式監控模式
- Java併發程式設計中的設計模式解析(一)Java程式設計設計模式
- 為什麼一定要學習設計模式設計模式
- Java設計模式學習筆記(一) 設計模式概述Java設計模式筆記
- 什麼是設計模式設計模式
- Java併發程式設計---java規範與模式下的併發程式設計1.1Java程式設計模式
- Java併發設計模式--不可變模式(immutable)Java設計模式
- Java設計模式學習Java設計模式
- Doug Lea併發設計模式(JUC學習前奏)設計模式
- 通過 SingleFlight 模式學習 Go 併發程式設計模式Go程式設計
- Java設計模式(6)之觀察者模式學習總結Java設計模式
- Java學設計模式之享元模式Java設計模式
- 設計模式學習之單例模式設計模式單例
- PHP 併發程式設計之 Master-Worker 模式PHP程式設計AST模式
- 《java學習二》併發程式設計Java程式設計
- 什麼是設計模式?為什麼要使用設計模式?有什麼好處?設計模式
- 設計+雲桌面是一種什麼模式模式
- Zabbix Agent active主動模式配置模式
- zabbix agent(Active)模式 /克隆修改模板模式
- RAC 下做Active 和standby 模式模式
- Java設計模式(4)之介面卡模式學習總結Java設計模式
- Java設計模式(5)之責任鏈模式學習總結Java設計模式
- 設計模式的數學定義是什麼?設計模式
- Java設計模式學習08——組合模式Java設計模式
- Java設計模式學習三-----工廠模式Java設計模式
- Java設計模式學習二Java設計模式
- Java學設計模式之裝飾器模式Java設計模式
- Java學設計模式之責任鏈模式Java設計模式
- .NET的併發程式設計(TPL程式設計)是什麼?程式設計
- 設計模式學習之訪問者模式設計模式
- 設計模式學習筆記之策略模式設計模式筆記