本書從理論到實戰,用生活化的實例和通俗易懂的語言全面介紹Java多執行緒編程的“三十六計”多執行緒設計模式
基本介紹
- 書名:Java多執行緒編程實戰指南:設計模式篇(第2版)
- 作者:黃文海
- 類別:計算機
- 出版社:電子工業出版社
- 出版時間:2020年3月
- 頁數:296 頁
- 定價:69 元
- 開本:16 開
- ISBN:9787121382451
內容簡介,圖書目錄,作者簡介,
內容簡介
《Java多執行緒編程實戰指南:設計模式篇(第2版)》採用Java 語言和UML 為描述語言,並結合作者多年工作經歷及相關實踐經驗,介紹了多執行緒環境下常用設計模式的來龍去脈:各個設計模式是什麼樣的、閥謎典型的實際套用場景、實際套用時需要 注意的事項及各個設計模式的可復用實現腿諒罪挨代碼。
第2 版除更正了第1 版中的錯誤外,還新增了JDK 8、JDK 9 中與多執行緒設計模式相關的內容, 並對代碼進行了重構和重新排版,使代碼部分重點更突出、更易於閱讀,以及提高了插圖的清晰度。
圖書目錄
第1章 Java多執行緒編程實戰基礎 1
1.1 無處不在的執行緒 1
1.2 執行緒的創建與運行 3
1.3 執行緒的狀態與上下文切換 5
1.4 對執行緒的監視 8
1.5 原子性、記憶體可見性和重排序——重新認識synchronized
和volatile 11
1.6 多執行緒編程的優勢和風險 13
1.7 多執行緒編程常用術語 14
第2章 設計模式簡介 19
2.1 設計模式及其作用 19
2.2 多執行緒驗櫃埋設計模式簡介 22
2.3 設計模式的描述 23
第3章 Immutable Object(不可變對象)模式 25
3.1 Immutable Object模式簡介 25
3.2 Immutable Object模式的架構 27
3.3 Immutable Object模式實戰案例解析 29
3.4 Immutable Object模式的評價與實現考量 33
3.4.1 適用場景 33
3.4.2 對垃圾回收(Garbage Collection)的影響 34
3.4.3 使用等效或者近似的不可變對象 35
3.4.4 防禦性複製 35
3.5 Immutable Object模式的可復用實現代碼 35
3.6 Java標準庫實例 35
3.7 相關模式 37
3.7.1 Thread Specific Storage模式(第10章) 37
3.7.2 Serial Thread Confinement模式(第11章) 37
3.8 參考資源 38
第4章 Guarded Suspension(保護性暫掛)模式 39
4.1 Guarded Suspension模式簡介 39
4.2 Guarded Suspension模式的架構 39
4.3 Guarded Suspension模式實戰案例解析 43
4.4 Guarded Suspension模式的評價與實現考量 50
4.4.1 記憶體可見性和鎖泄漏(Lock Leak) 51
4.4.2 執行緒被過早地喚醒 52
4.4.3 嵌套監視器鎖死 53
4.5 Guarded Suspension模式的可復用實現代碼 56
4.6 Java標準庫實例 56
4.7 相關模式 56
4.7.1 Promise模式(第6章) 57
4.7.2 Producer-Consumer模式(第7章) 57
4.8 參考資源 57
第5章 Two-phase Termination(兩階段終止)模式 58
5.1 Two-phase Termination模式簡介 58
5.2 Two-phase Termination模式的架構 59
5.3 Two-phase Termination模式實戰案例解析 61
5.4 Two-phase Termination模式的評價與實現考量 70
5.4.1 執行緒停止標誌 71
5.4.2 生歸刪阿員產者/消費者問題中的執行緒停止 71
5.4.3 隱藏而非暴露可停止執行緒 73
5.5 Two-phase Termination模式的可復用實現代碼 73
5.6 Java標準庫實例 73
5.7 相關模式 74
5.7.1 Producer-Consumer模式(第7章) 74
5.7.2 Master-Slave模式(第12章) 74
5.8 參考資源 74
第6章 Promise(承諾)模漏幾殼式 75
6.1 Promise模式簡介 75
6.2 Promise模式的架整白嚷構 75
6.3 Promise模式實戰案例解析 78
6.4 Promise模式的評價與實現考量 81
6.4.1 異步方法的異常處理 82
6.4.2 輪墓獄立詢 82
6.4.3 異步任務的執行 83
6.5 Promise模式的可復用實現代碼 84
6.6 Java標準庫實例 85
6.7 相關模式 85
6.7.1 Guarded Suspension模式(第4章) 85
6.7.2 Active Object模式(第8章) 86
6.7.3 Master-Slave模式(第12章) 86
6.7.4 Factory Method(工廠方法)模式 86
6.8 參考資源 86
第7章 Producer-Consumer(生產者/消費者)模式 87
7.1 Producer-Consumer模式簡介 87
7.2 Producer-Consumer模式的架構 87
7.3 Producer-Consumer模式實戰案例解析 90
7.4 Producer-Consumer模式的評價與實現考量 93
7.4.1 產品的粒度 94
7.4.2 通道積壓 94
7.4.3 非阻塞式反壓與Reactive Streams規範 96
7.4.4 工作竊取算法 97
7.4.5 執行緒的停止 101
7.4.6 高性能、高可靠性的Producer-Consumer模式實現 101
7.5 Producer-Consumer模式的可復用實現代碼 102
7.6 Java標準庫實例 102
7.7 相關模式 102
7.7.1 Guarded Suspension模式(第4章) 102
7.7.2 Thread Pool模式(第9章) 103
7.8 參考資源 103
第8章 Active Object(主動對象)模式 104
8.1 Active Object模式簡介 104
8.2 Active Object模式的架構 105
8.3 Active Object模式實戰案例解析 108
8.4 Active Object模式的評價與實現考量 115
8.4.1 錯誤隔離 117
8.4.2 緩衝區監控 118
8.4.3 緩衝區飽和處理策略 118
8.4.4 Scheduler空閒工作者執行緒清理 119
8.5 Active Object模式的可復用實現代碼 119
8.6 Java標準庫實例 123
8.7 相關模式 123
8.7.1 Promise模式(第6章) 123
8.7.2 Producer-Consumer模式(第7章) 123
8.8 參考資源 124
第9章 Thread Pool(執行緒池)模式 125
9.1 Thread Pool模式簡介 125
9.2 Thread Pool模式的架構 126
9.3 Thread Pool模式實戰案例解析 128
9.4 Thread Pool模式的評價與實現考量 130
9.4.1 工作佇列的選擇 131
9.4.2 執行緒池大小調校 132
9.4.3 執行緒池監控 134
9.4.4 執行緒泄漏 135
9.4.5 可靠性與執行緒池飽和處理策略 135
9.4.6 死鎖 138
9.4.7 執行緒池空閒執行緒清理 139
9.5 Thread Pool模式的可復用實現代碼 140
9.6 Java標準庫實例 140
9.7 相關模式 140
9.7.1 Two-phase Termination模式(第5章) 140
9.7.2 Promise模式(第6章) 141
9.7.3 Producer-Consumer模式(第7章) 141
9.8 參考資源 141
第10章 Thread Specific Storage(執行緒特有存儲)模式 142
10.1 Thread Specific Storage模式簡介 142
10.2 Thread Specific Storage模式的架構 144
10.3 Thread Specific Storage模式實戰案例解析 146
10.4 Thread Specific Storage模式的評價與實現考量 149
10.4.1 線上程池環境下使用Thread Specific Storage模式 153
10.4.2 記憶體泄漏與偽記憶體泄漏 153
10.5 Thread Specific Storage模式的可復用實現代碼 161
10.6 Java標準庫實例 161
10.7 相關模式 162
10.7.1 Immutable Object模式(第3章) 162
10.7.2 Proxy(代理)模式 162
10.7.3 Singleton(單例)模式 162
10.8 參考資源 162
第11章 Serial Thread Confinement(串列執行緒封閉)模式 163
11.1 Serial Thread Confinement模式簡介 163
11.2 Serial Thread Confinement模式的架構 163
11.3 Serial Thread Confinement模式實戰案例解析 166
11.4 Serial Thread Confinement模式的評價與實現考量 170
11.5 Serial Thread Confinement模式的可復用實現代碼 171
11.6 Java標準庫實例 176
11.7 相關模式 177
11.7.1 Immutable Object模式(第3章) 177
11.7.2 Promise模式(第6章) 177
11.7.3 Producer-Consumer模式(第7章) 177
11.7.4 Thread Specific Storage模式(第10章) 177
11.8 參考資源 177
第12章 Master-Slave(主僕)模式 178
12.1 Master-Slave模式簡介 178
12.2 Master-Slave模式的架構 178
12.3 Master-Slave模式實戰案例解析 180
12.4 Master-Slave模式的評價與實現考量 187
12.4.1 子任務處理結果的收集 188
12.4.2 Slave參與者實例的負載均衡與工作竊取 189
12.4.3 可靠性與異常處理 190
12.4.4 Slave執行緒的停止 190
12.5 Master-Slave模式的可復用實現代碼 190
12.6 Java標準庫實例 204
12.7 相關模式 204
12.7.1 Two-phase Termination模式(第5章) 204
12.7.2 Promise模式(第6章) 204
12.7.3 Strategy(策略)模式 204
12.7.4 Template(模板)模式 205
12.7.5 Factory Method(工廠方法)模式 205
12.8 參考資源 205
第13章 Pipeline(流水線)模式 206
13.1 Pipeline模式簡介 206
13.2 Pipeline模式的架構 207
13.3 Pipeline模式實戰案例解析 212
13.4 Pipeline模式的評價與實現考量 219
13.4.1 Pipeline的深度 220
13.4.2 基於執行緒池的Pipe 220
13.4.3 錯誤處理 223
13.4.4 可配置的Pipeline 224
13.5 Pipeline模式的可復用實現代碼 224
13.6 Java標準庫實例 236
13.7 相關模式 236
13.7.1 Serial Thread Confinement模式(第11章) 236
13.7.2 Master-Slave模式(第12章) 237
13.7.3 Composite模式 237
13.8 參考資源 237
第14章 Half-sync/Half-async(半同步/半異步)模式 238
14.1 Half-sync/Half-async模式簡介 238
14.2 Half-sync/Half-async模式的架構 238
14.3 Half-sync/Half-async模式實戰案例解析 240
14.4 Half-sync/Half-async模式的評價與實現考量 249
14.4.1 佇列積壓 250
14.4.2 避免同步任務層處理過慢 251
14.5 Half-sync/Half-async模式的可復用實現代碼 251
14.6 Java標準庫實例 256
14.7 相關模式 256
14.7.1 Two-phase Termination模式(第5章) 256
14.7.2 Producer-Consumer模式(第7章) 256
14.7.3 Active Object模式(第8章) 256
14.7.4 Thread Pool模式(第9章) 257
14.8 參考資源 257
第15章 模式語言 258
15.1 設計模式之間的聯繫 258
15.2 Immutable Object模式 260
15.3 Guarded Suspension模式 261
15.4 Two-phase Termination模式 262
15.5 Promise模式 263
15.6 Producer-Consumer模式 264
15.7 Active Object模式 265
15.8 Thread Pool模式 266
15.9 Thread Specific Storage模式 267
15.10 Serial Thread Confinement模式 268
15.11 Master-Slave模式 269
15.12 Pipeline模式 270
15.13 Half-sync/Half-async模式 271
附錄A 本書常用UML圖指南 272
參考文獻 281
作者簡介
黃文海,2004年開始從事軟體開發工作,從事軟體項目管理工作。在其工作過程中積累了豐富的技術指導經驗和企業內部培訓經驗。曾在InfoQ中文站和IBM developerWorks上發表過十幾篇技術、項目管理文章。
4.5 Guarded Suspension模式的可復用實現代碼 56
4.6 Java標準庫實例 56
4.7 相關模式 56
4.7.1 Promise模式(第6章) 57
4.7.2 Producer-Consumer模式(第7章) 57
4.8 參考資源 57
第5章 Two-phase Termination(兩階段終止)模式 58
5.1 Two-phase Termination模式簡介 58
5.2 Two-phase Termination模式的架構 59
5.3 Two-phase Termination模式實戰案例解析 61
5.4 Two-phase Termination模式的評價與實現考量 70
5.4.1 執行緒停止標誌 71
5.4.2 生產者/消費者問題中的執行緒停止 71
5.4.3 隱藏而非暴露可停止執行緒 73
5.5 Two-phase Termination模式的可復用實現代碼 73
5.6 Java標準庫實例 73
5.7 相關模式 74
5.7.1 Producer-Consumer模式(第7章) 74
5.7.2 Master-Slave模式(第12章) 74
5.8 參考資源 74
第6章 Promise(承諾)模式 75
6.1 Promise模式簡介 75
6.2 Promise模式的架構 75
6.3 Promise模式實戰案例解析 78
6.4 Promise模式的評價與實現考量 81
6.4.1 異步方法的異常處理 82
6.4.2 輪詢 82
6.4.3 異步任務的執行 83
6.5 Promise模式的可復用實現代碼 84
6.6 Java標準庫實例 85
6.7 相關模式 85
6.7.1 Guarded Suspension模式(第4章) 85
6.7.2 Active Object模式(第8章) 86
6.7.3 Master-Slave模式(第12章) 86
6.7.4 Factory Method(工廠方法)模式 86
6.8 參考資源 86
第7章 Producer-Consumer(生產者/消費者)模式 87
7.1 Producer-Consumer模式簡介 87
7.2 Producer-Consumer模式的架構 87
7.3 Producer-Consumer模式實戰案例解析 90
7.4 Producer-Consumer模式的評價與實現考量 93
7.4.1 產品的粒度 94
7.4.2 通道積壓 94
7.4.3 非阻塞式反壓與Reactive Streams規範 96
7.4.4 工作竊取算法 97
7.4.5 執行緒的停止 101
7.4.6 高性能、高可靠性的Producer-Consumer模式實現 101
7.5 Producer-Consumer模式的可復用實現代碼 102
7.6 Java標準庫實例 102
7.7 相關模式 102
7.7.1 Guarded Suspension模式(第4章) 102
7.7.2 Thread Pool模式(第9章) 103
7.8 參考資源 103
第8章 Active Object(主動對象)模式 104
8.1 Active Object模式簡介 104
8.2 Active Object模式的架構 105
8.3 Active Object模式實戰案例解析 108
8.4 Active Object模式的評價與實現考量 115
8.4.1 錯誤隔離 117
8.4.2 緩衝區監控 118
8.4.3 緩衝區飽和處理策略 118
8.4.4 Scheduler空閒工作者執行緒清理 119
8.5 Active Object模式的可復用實現代碼 119
8.6 Java標準庫實例 123
8.7 相關模式 123
8.7.1 Promise模式(第6章) 123
8.7.2 Producer-Consumer模式(第7章) 123
8.8 參考資源 124
第9章 Thread Pool(執行緒池)模式 125
9.1 Thread Pool模式簡介 125
9.2 Thread Pool模式的架構 126
9.3 Thread Pool模式實戰案例解析 128
9.4 Thread Pool模式的評價與實現考量 130
9.4.1 工作佇列的選擇 131
9.4.2 執行緒池大小調校 132
9.4.3 執行緒池監控 134
9.4.4 執行緒泄漏 135
9.4.5 可靠性與執行緒池飽和處理策略 135
9.4.6 死鎖 138
9.4.7 執行緒池空閒執行緒清理 139
9.5 Thread Pool模式的可復用實現代碼 140
9.6 Java標準庫實例 140
9.7 相關模式 140
9.7.1 Two-phase Termination模式(第5章) 140
9.7.2 Promise模式(第6章) 141
9.7.3 Producer-Consumer模式(第7章) 141
9.8 參考資源 141
第10章 Thread Specific Storage(執行緒特有存儲)模式 142
10.1 Thread Specific Storage模式簡介 142
10.2 Thread Specific Storage模式的架構 144
10.3 Thread Specific Storage模式實戰案例解析 146
10.4 Thread Specific Storage模式的評價與實現考量 149
10.4.1 線上程池環境下使用Thread Specific Storage模式 153
10.4.2 記憶體泄漏與偽記憶體泄漏 153
10.5 Thread Specific Storage模式的可復用實現代碼 161
10.6 Java標準庫實例 161
10.7 相關模式 162
10.7.1 Immutable Object模式(第3章) 162
10.7.2 Proxy(代理)模式 162
10.7.3 Singleton(單例)模式 162
10.8 參考資源 162
第11章 Serial Thread Confinement(串列執行緒封閉)模式 163
11.1 Serial Thread Confinement模式簡介 163
11.2 Serial Thread Confinement模式的架構 163
11.3 Serial Thread Confinement模式實戰案例解析 166
11.4 Serial Thread Confinement模式的評價與實現考量 170
11.5 Serial Thread Confinement模式的可復用實現代碼 171
11.6 Java標準庫實例 176
11.7 相關模式 177
11.7.1 Immutable Object模式(第3章) 177
11.7.2 Promise模式(第6章) 177
11.7.3 Producer-Consumer模式(第7章) 177
11.7.4 Thread Specific Storage模式(第10章) 177
11.8 參考資源 177
第12章 Master-Slave(主僕)模式 178
12.1 Master-Slave模式簡介 178
12.2 Master-Slave模式的架構 178
12.3 Master-Slave模式實戰案例解析 180
12.4 Master-Slave模式的評價與實現考量 187
12.4.1 子任務處理結果的收集 188
12.4.2 Slave參與者實例的負載均衡與工作竊取 189
12.4.3 可靠性與異常處理 190
12.4.4 Slave執行緒的停止 190
12.5 Master-Slave模式的可復用實現代碼 190
12.6 Java標準庫實例 204
12.7 相關模式 204
12.7.1 Two-phase Termination模式(第5章) 204
12.7.2 Promise模式(第6章) 204
12.7.3 Strategy(策略)模式 204
12.7.4 Template(模板)模式 205
12.7.5 Factory Method(工廠方法)模式 205
12.8 參考資源 205
第13章 Pipeline(流水線)模式 206
13.1 Pipeline模式簡介 206
13.2 Pipeline模式的架構 207
13.3 Pipeline模式實戰案例解析 212
13.4 Pipeline模式的評價與實現考量 219
13.4.1 Pipeline的深度 220
13.4.2 基於執行緒池的Pipe 220
13.4.3 錯誤處理 223
13.4.4 可配置的Pipeline 224
13.5 Pipeline模式的可復用實現代碼 224
13.6 Java標準庫實例 236
13.7 相關模式 236
13.7.1 Serial Thread Confinement模式(第11章) 236
13.7.2 Master-Slave模式(第12章) 237
13.7.3 Composite模式 237
13.8 參考資源 237
第14章 Half-sync/Half-async(半同步/半異步)模式 238
14.1 Half-sync/Half-async模式簡介 238
14.2 Half-sync/Half-async模式的架構 238
14.3 Half-sync/Half-async模式實戰案例解析 240
14.4 Half-sync/Half-async模式的評價與實現考量 249
14.4.1 佇列積壓 250
14.4.2 避免同步任務層處理過慢 251
14.5 Half-sync/Half-async模式的可復用實現代碼 251
14.6 Java標準庫實例 256
14.7 相關模式 256
14.7.1 Two-phase Termination模式(第5章) 256
14.7.2 Producer-Consumer模式(第7章) 256
14.7.3 Active Object模式(第8章) 256
14.7.4 Thread Pool模式(第9章) 257
14.8 參考資源 257
第15章 模式語言 258
15.1 設計模式之間的聯繫 258
15.2 Immutable Object模式 260
15.3 Guarded Suspension模式 261
15.4 Two-phase Termination模式 262
15.5 Promise模式 263
15.6 Producer-Consumer模式 264
15.7 Active Object模式 265
15.8 Thread Pool模式 266
15.9 Thread Specific Storage模式 267
15.10 Serial Thread Confinement模式 268
15.11 Master-Slave模式 269
15.12 Pipeline模式 270
15.13 Half-sync/Half-async模式 271
附錄A 本書常用UML圖指南 272
參考文獻 281
作者簡介
黃文海,2004年開始從事軟體開發工作,從事軟體項目管理工作。在其工作過程中積累了豐富的技術指導經驗和企業內部培訓經驗。曾在InfoQ中文站和IBM developerWorks上發表過十幾篇技術、項目管理文章。