前言 ............................................................................................ XVII
1 簡介 ........................................................................................................... 1
並發程序設計 .......................................................................................................... 1
傳統並發編程技術概述 ............................................................................. 2
現代並發範式 .......................................................................................................... 3
Scala 的優點 ....................................................................... 4
預備知識 ....................................................................................... 5
執行Scala 程序 ......................................................................... 5
Scala 基礎知識 ................................................................................................ 6
小結 ...................................................................................................... 11
練習 ........................................................................................ 11
2 JVM 和Java 內存模型中的並發處理方式 ................................................ 13
進程和綫程 ...................................................................... 14
創建和啓動綫程 ....................................................16
原子執行方式 .......................................................21
調整次序 ..................................................................................................25
監控器和同步 ............................................................................................... 27
死鎖 .....................................................................................................29
保衛鎖 ..........................................................................................................32
中斷綫程和正常關閉 ...............................................................................................36
Volatile 變量 .................................................................................................. 37
Java 內存模型.............................................................................................. 39
不可變對象和final 字段 .......................................................41
小結 ............................................................. 43
練習 ....................................................................................... 43
3 構建並發程序的傳統材料 ............................................. 47
Executor 和ExecutionContext 對象 ................... 48
原子型基元 ...................................................... 52
原子變量 ............................................................................52
無鎖編程 ..........................................................55
以明確方式實現鎖 ...................................................................57
ABA 問題 .....................................................................59
惰性值 .............................................................................. 61
並發集閤 ..................................................................... 66
並發隊列 ...............................................................................68
並發集和映射 .....................................................71
並發遍曆 .............................................................77
創建和處理進程 ...................................................... 79
小結 ................................................................. 81
練習 ................................................................... 81
4 使用Future 和Promise 對象編寫異步程序 .............................................. 85
Future 類 ................................................................................. 86
執行Future 計算....................................................................88
Future 對象的迴調函數 ..................................................89
Future 計算和異常 ...............................................92
使用Try 類型 .......................................93
緻命異常 ............................................95
Future 對象中的函數組閤 ............................................................95
Promise 類 .................................................. 103
轉換基於迴調函數的API ........................................................... 106
擴展Future API .................................................. 108
取消異步計算操作 ..................................................................................... 109
Future 對象和阻塞操作 ................................................................... 112
等待Future 對象..................................................................................... 112
在異步計算內部執行阻塞操作 ................................................................................... 113
Scala Async 庫 ...................................................................... 114
可選的Future 框架 .......................................................................................... 117
小結 ........................................................................................................... 118
練習 ....................................................................................................................... 119
5 數據並行集閤 ......................................................................................... 121
Scala 集閤概述 ................................................................................................ 122
並行集閤的用法 ......................................................................................... 123
並行集閤類的層次結構 ....................................................................................... 126
配置並行等級 ...................................................................................................... 128
在JVM 中度量性能 ............................................................................. 129
使用並行集閤的注意事項 ................................................................................. 131
非可並行化集閤 .................................................................... 131
非可並行化操作 .............................................................................................. 132
並行操作的副作用 .................................................................................................... 134
不確定的並行操作 .................................. 135
可交換和可結閤操作符 .............................................................. 137
組閤使用並行集閤和並發集閤 .................................................................... 139
弱一緻性迭代器 ........................................................ 140
實現自定義的並行集閤 ............................................................................... 141
分離器 ................................................................................................ 142
組閤器 ..................................................................................................... 145
可選的數據並行框架 ................................................................. 148
ScalaBlitz 框架中的集閤層次結構 .............................................................. 149
小結 ....................................................................................................... 150
練習 ............................................................................................. 151
6 使用Reactive Extensions 編寫並發程序 ............................................... 153
創建Observable 對象 ............................................................... 154
Observable 對象和異常 ................................................................ 157
Observable 協定 ................................................................................ 158
實現自定義Observable 對象 ...................................................................................... 160
通過Future 對象創建Observable 對象 ............................................................ 161
Subscription 對象 ............................................................................................ 162
組閤Observable 對象 ...................................................................................... 165
嵌套的Observable 對象 ....................................................................................... 166
處理完善Observable 對象失敗的情況 .................................................................. 171
Rx 調度器 ............................................................................... 174
使用自定義調度器編寫UI 應用程序 .................................................................. 176
Subject 特徵和自頂嚮下的響應式編程 .................................................. 181
小結 ............................................................................................ 186
練習 ..................................................................................... 186
7 基於軟件的事務內存 .............................................................................. 189
原子變量帶來的麻煩 ...................................................................... 190
使用基於軟件的事務內存 .............................................. 194
事務引用 ......................................................... 196
使用atomic 語句 ................................................................ 197
組閤事務 .............................................................. 198
事務與副作用 ................................................................. 199
單操作事務 ................................................................. 203
嵌套事務 ........................................................... 205
事務和異常 ...................................................... 208
重新嘗試執行事務 ........................................ 212
通過超時設置重新嘗試執行事務 ......................................... 216
事務集閤 ..................................................................................... 217
事務局部變量 ................................................................. 218
事務數組 ......................................................... 219
事務映射 .............................................................................. 221
小結 ............................................................................................. 222
練習 ............................................................................. 223
8 Actor ...................................................................................................... 227
使用Actor 模型 ............................................................................... 228
創建Actor 係統和Actor 實例 ..................................................................... 230
管理無法正常處理的消息 .................................................................................. 233
Actor 實例的行為和狀態 ........................................................................................ 234
Akka 框架中的Actor 層次結構.................................................................................. 239
識彆Actor 對象 ............................................................................................... 242
Actor 對象的生命周期 ................................................................................... 245
Actor 對象之間的通信 ...................................................... 249
請求模式 ........................................................ 251
轉發模式 ..................................................................... 254
停止Actor 對象 ......................................................................... 255
Actor 監督 .......................................................................... 257
遠程Actor 對象 ............................................................. 263
小結 .............................................................................................. 266
練習 ................................................................................................... 267
9 實用並發技術 ......................................................................................... 269
工欲善其事,必先利其器 ....................................................... 269
組閤使用多種框架——編寫遠程文件管理器 ............................................ 273
創建文件係統模型 ........................................................ 274
服務器接口 ......................................................................... 278
客戶端導航API.................................................................................. 280
客戶端的用戶界麵 ............................................................................. 284
實現客戶端程序的邏輯 .................................................................................. 288
改進遠程文件管理器 ........................................................................................ 293
調試並發程序 ................................................................................................................... 294
死鎖和暫停處理過程 ............................................................... 295
調試運行結果不正確的程序 ................................................................ 299
性能調試 ............................................................................... 304
小結 .............................................................................................................................. 310
練習 .................................................................................................................................. 311
· · · · · · (
收起)