基本介紹
內容簡介
《Java虛擬機並發編程》為Java並發編程領域的里程碑之作,資深Java技術專家、並發編程專家、敏捷開發專家和Jolt大獎得主撰寫,Amazon五星暢銷書!系統深入地講解在JVM平台上如何利用JDK同步模型、軟體事務記憶體模型和基於角色的並發模型進行並發編程。列舉豐富示例。包含大量編程技巧和最佳實踐。
作者簡介
作者:(美國)蘇布拉馬尼亞姆(Venkat Subramaniam) 譯者:薛笛
蘇布拉馬尼亞姆(Venkat Subramaniam),資深Java技術專家、並發編程專家和敏捷技術專家,擁有超過20年的軟體開發經驗,在Java領域(整個Java平台)、敏捷開發領域有非常深入的研究,並進行了大量實踐。他是Agile Developer公司創始人,在美洲、歐洲和亞洲等多個國家和地區開展培訓和指導工作,已經幫助數以千計的軟體開發人員成功地在其軟體項目中運用敏捷方法。他經常受邀在大型國際軟體會議和用戶組活動中發表技術演講,深受歡迎。他著作頗豐,先後獨自撰寫了《.NET Gotchas》、《Programming Groovy》、《Programming Scala》等經典著作,尤為值得一提的是,他與人合著的《Practices of an Agil Developer》一書獲得了2007年的Jolt生產力大獎。
薛笛,資深軟體開發工程師,精通分散式系統開發和Java相關技術,對JVM有深入的研究。目前就職於騰訊公司,擔任高級開發工程師,負責手機QQ、手機Qzone等套用的後台開發。熱衷於技術分享,在《程式設計師》雜誌和IBM Developers Work上發表過多篇技術文章,CSDN部落格專家。
圖書目錄
譯者序
前言
第1章 並發的威力與風險 1
1.1執行緒:程式的執行流程 1
1.2並發的威力 1
1.3並發的風險 4
1.4小結 9
第一部分 並發策略
第2章 分工原則 11
2.1從順序到並發 11
2.2在IO密集型應用程式中使用並發技術 13
2.3並發方法對IO密集型應用程式的加速效果 19
2.4在計算密集型應用程式中使用並發技術 20
2.5並發方法對於計算密集型應用程式的加速效果 25
2.6有效的並發策略 26
2.7小結 27
第3章 設計方法 28
3.1處理狀態 28
3.2探尋設計選項 29
3.3共享可變性設計 29
3.4隔離可變性設計 30
3.5純粹不可變性設計 30
3.6持久的 不可變的數據結構 31
3.7選擇一種設計方法 34
3.8小結 34
第二部分 現代Java JDK並發模型
第4章 可擴展性和執行緒安全 37
4.1用ExecutorService管理執行緒 37
4.2使執行緒協作 38
4.3數據交換 47
4.4Java7Fork—JoinAPI 49
4.5可擴展集合類 51
4.6Lock和Synchronized 54
4.7小結 58
第5章 馴服共享可變性 59
5.1共享可變性!=Public 59
5.2定位並發問題 59
5.3保持不變式 61
5.4管理好資源 62
5.5保證可見性 64
5.6增強並發性 65
5.7保證原子性 67
5.8小結 70
第三部分 軟體事務記憶體
第6章 軟體事務記憶體導論 71
6.1同步與並發水火不容 71
6.2對象模型的缺陷 72
6.3將實體與狀態分離 73
6.4軟體事務記憶體 74
6.5STM中的事務 77
6.6用STM實現並發 77
6.7用Akka MultiverseSTM實現並發 82
6.8創建事務 84
6.9創建嵌套事務 90
6.10配置Akka事務 97
6.11阻塞事務—有意識地等待 100
6.12提交和回滾事件 103
6.13集合與事務 106
6.14處理寫偏斜異常 110
6.15STM的局限性 112
6.16小結 116
第7章 在Clojure、Groovy、Java、JRuby和Scala中使用STM 117
7.1ClojureSTM 117
7.2Groovy集成 118
7.3Java集成 122
7.4JRuby集成 124
7.5Scala中的可選方案 130
7.6小結 133
第四部分 基於角色的並發模型
第8章 討喜的隔離可變性 135
8.1用角色實現隔離可變性 136
8.2角色的特性 137
8.3創建角色 138
8.4收發訊息 144
8.5同時使用多個角色 148
8.6多角色協作 152
8.7使用類型化角色 159
8.8類型化角色和murmurs 163
8.9混合使用角色和STM 169
8.10使用transactor 169
8.11調和類型化角色 176
8.12遠程角色 182
8.13基於角色模型的局限性 184
8.14小結 184
第9章 在Groovy、Java、JRuby和Scala中使用角色 186
9.1在Groovy中使用GPars提供的角色實現 186
9.2在Java中使用Akka提供的角色實現 199
9.3在JRuby中使用Akka提供的Actor實現 199
9.4在Scala中使用角色 202
9.5小結 202
第五部分 後記
第10章 並發編程之禪 205
10.1慎重選擇 205
10.2並發:程式設計師指南 206
10.3並發:架構師指南 207
10.4明智地進行選擇 208
附錄1 Clojureagent 210
附錄2 一些網路資源 214
參考文獻 216
名人推薦
這是一部優秀的著作!Venkat巧妙地帶領我們經歷了當今JVM開發人員在多執行緒編程時所面臨的許多設計和實現決策。這本書通過通俗易懂的語言和豐富的例子(使用了當前多種開源工具和JVM語言)使得這個複雜的主題更加一目了然。
——Albert Scherer福萊特高等教育集團有限公司電子商務技術部經理
如果JVM是你的首選平台,那么這絕對是你必讀的一本書。購買並閱讀,然後讓你所有的團隊成員人手一本。你將順利找到一條優秀並發問題解決方案之路。
——Raju Gandhi Integrailis軟體有限責任公司高級顧問
這本書非常透徹地闡釋了一個極其重要的主題。
——Chris Richardson Cloud Foundry.com創始人
當前計算機領域對新的並發模型和JvM上新語言的興趣和套用正在逐年遞增。Venkat的這本書把二者綁在一起,向一線的開發人員展示了如何構建應用程式,並儘可能地利用現有的庫,即使它們是使用不同的語言構建的。
——Alex Miller Revelytix公司高級工程師
Venkat將引領你進入並發的世界。在開始STM和角色的精彩冒險之旅之前,他教授TJavaJDK內置的現代並發工具。我真誠地相信,這本書注定是目前已有的最重要的並發編程書籍之一。Venkat再次做到了這一點!
——Matt Stine Auto Zone公司技術架構師
當前並發是一個熱門話題,venkat將帶你領略JVM上有效的並發編程技巧和技術。更重要的是,通過比較和對比五種不同的JVM語言中並發編程的方法,你將會開拓視野。
——Scott Leberknight Near Infinity公司首席架構師