《Java虛擬機並發編程》是2013年機械工業出版社出版的圖書,作者是蘇布拉馬尼亞姆。
基本介紹
- 書名:Java虛擬機並發編程
- 作者:蘇布拉馬尼亞姆 (Venkat Subramaniam)
- 類型:計算機與網際網路
- 出版日期:2013年7月1日
- 語種:簡體中文
- ISBN:9787111418931
- 譯者:薛笛
- 出版社:機械工業出版社
- 頁數:215頁
- 開本:16
- 品牌:機械工業出版社
內容簡介,圖書目錄,作者簡介,
內容簡介
《Java虛擬機並發編程》為Java並發編程領域的里程碑之作,資深Java技術專家、並發編程專家、敏捷開發專家和Jolt大獎得主撰寫,Amazon五星暢銷書!系統深入地講解在JVM平台上如何利用JDK同步模型、軟體事務記憶體模型和基於角色的並發模型進行並發編程。列舉豐富示例。包含大量編程技巧和最佳實踐。
圖書目錄
譯者序
前言
第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
前言
第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 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部落格專家。
蘇布拉馬尼亞姆(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部落格專家。