第1章 Java多線程編程實戰(zhàn)基礎 1
1.1 無處不在的線程 1
1.2 線程的創(chuàng)建與運行 2
1.3 線程的狀態(tài)與上下文切換 5
1.4 線程的監(jiān)視 7
1.5 原子性、內存可見性和重排序——重新認識synchronized和volatile 10
1.6 線程的優(yōu)勢和風險 11
1.7 多線程編程常用術語 13
第2章 設計模式簡介 17
2.1 設計模式及其作用 17
2.2 多線程設計模式簡介 20
2.3 設計模式的描述 21
第3章 Immutable Object(不可變對象)模式 23
3.1 Immutable Object模式簡介 23
3.2 Immutable Object模式的架構 25
3.3 Immutable Object模式實戰(zhàn)案例 27
3.4 Immutable Object模式的評價與實現考量 31
3.5 Immutable Object模式的可復用實現代碼 32
3.6 Java標準庫實例 32
3.7 相關模式 34
3.7.1 Thread Specific Storage模式(第10章) 34
3.7.2 Serial Thread Confinement模式(第11章) 34
3.8 參考資源 34
第4章 Guarded Suspension(保護性暫掛)模式 35
4.1 Guarded Suspension模式簡介 35
4.2 Guarded Suspension模式的架構 35
4.3 Guarded Suspension模式實戰(zhàn)案例解析 39
4.4 Guarded Suspension模式的評價與實現考量 45
4.4.1 內存可見性和鎖泄漏(Lock Leak) 46
4.4.2 線程過早被喚醒 46
4.4.3 嵌套監(jiān)視器鎖死 47
4.5 Guarded Suspension模式的可復用實現代碼 50
4.6 Java標準庫實例 50
4.7 相關模式 51
4.7.1 Promise模式(第6章) 51
4.7.2 Producer-Consumer模式(第7章) 51
4.8 參考資源 51
第5章 Two-phase Termination(兩階段終止)模式 52
5.1 Two-phase Termination模式簡介 52
5.2 Two-phase Termination模式的架構 53
5.3 Two-phase Termination模式實戰(zhàn)案例 56
5.4 Two-phase Termination模式的評價與實現考量 63
5.4.1 線程停止標志 63
5.4.2 生產者-消費者問題中的線程停止 64
5.4.3 隱藏而非暴露可停止的線程 65
5.5 Two-phase Termination模式的可復用實現代碼 65
5.6 Java標準庫實例 66
5.7 相關模式 66
5.7.1 Producer-Consumer模式(第7章) 66
5.7.2 Master-Slave模式(第12章) 66
5.8 參考資源 66
第6章 Promise(承諾)模式 67
6.1 Promise模式簡介 67
6.2 Promise模式的架構 68
6.3 Promise模式實戰(zhàn)案例解析 70
6.4 Promise模式的評價與實現考量 74
6.4.1 異步方法的異常處理 75
6.4.2 輪詢(Polling) 75
6.4.3 異步任務的執(zhí)行 75
6.5 Promise模式的可復用實現代碼 77
6.6 Java標準庫實例 77
6.7 相關模式 78
6.7.1 Guarded Suspension模式(第4章) 78
6.7.2 Active Object模式(第8章) 78
6.7.3 Master-Slave模式(第12章) 78
6.7.4 Factory Method模式 78
6.8 參考資源 79
第7章 Producer-Consumer(生產者/消費者)模式 80
7.1 Producer-Consumer模式簡介 80
7.2 Producer-Consumer模式的架構 80
7.3 Producer-Consumer模式實戰(zhàn)案例解析 83
7.4 Producer-Consumer模式的評價與實現考量 87
7.4.1 通道積壓 87
7.4.2 工作竊取算法 88
7.4.3 線程的停止 92
7.4.4 高性能高可靠性的Producer-Consumer模式實現 92
7.5 Producer-Consumer模式的可復用實現代碼 92
7.6 Java標準庫實例 93
7.7 相關模式 93
7.7.1 Guarded Suspension模式(第4章) 93
7.7.2 Thread Pool模式(第9章) 93
7.8 參考資源 93
第8章 Active Object(主動對象)模式 94
8.1 Active Object模式簡介 94
8.2 Active Object模式的架構 95
8.3 Active Object模式實戰(zhàn)案例解析 98
8.4 Active Object模式的評價與實現考量 105
8.4.1 錯誤隔離 107
8.4.2 緩沖區(qū)監(jiān)控 108
8.4.3 緩沖區(qū)飽和處理策略 108
8.4.4 Scheduler空閑工作者線程清理 109
8.5 Active Object模式的可復用實現代碼 109
8.6 Java標準庫實例 111
8.7 相關模式 112
8.7.1 Promise模式(第6章) 112
8.7.2 Producer-Consumer模式(第7章) 112
8.8 參考資源 112
第9章 Thread Pool(線程池)模式 113
9.1 Thread Pool模式簡介 113
9.2 Thread Pool模式的架構 114
9.3 Thread Pool模式實戰(zhàn)案例解析 116
9.4 Thread Pool模式的評價與實現考量 117
9.4.1 工作隊列的選擇 118
9.4.2 線程池大小調校 119
9.4.3 線程池監(jiān)控 121
9.4.4 線程泄漏 122
9.4.5 可靠性與線程池飽和處理策略 122
9.4.6 死鎖 125
9.4.7 線程池空閑線程清理 126
9.5 Thread Pool模式的可復用實現代碼 127
9.6 Java標準庫實例 127
9.7 相關模式 127
9.7.1 Two-phase Termination模式(第5章) 127
9.7.2 Promise模式(第6章) 127
9.7.3 Producer-Consumer模式(第7章) 127
9.8 參考資源 128
第10章 Thread Specific Storage(線程特有存儲)模式 129
10.1 Thread Specific Storage模式簡介 129
10.2 Thread Specific Storage模式的架構 131
10.3 Thread Specific Storage模式實戰(zhàn)案例解析 133
10.4 Thread Specific Storage模式的評價與實現考量 135
10.4.1 線程池環(huán)境下使用Thread Specific Storage模式 138
10.4.2 內存泄漏與偽內存泄漏 139
10.5 Thread Specific Storage模式的可復用實現代碼 145
10.6 Java標準庫實例 146
10.7 相關模式 146
10.7.1 Immutable Object模式(第3章) 146
10.7.2 Proxy(代理)模式 146
10.7.3 Singleton(單例)模式 146
10.8 參考資源 147
第11章 Serial Thread Confinement(串行線程封閉)模式 148
11.1 Serial Thread Confinement模式簡介 148
11.2 Serial Thread Confinement模式的架構 148
11.3 Serial Thread Confinement模式實戰(zhàn)案例解析 151
11.4 Serial Thread Confinement模式的評價與實現考量 155
11.4.1 任務的處理結果 155
11.5 Serial Thread Confinement模式的可復用實現代碼 156
11.6 Java標準庫實例 160
11.7 相關模式 160
11.7.1 Immutable Object模式(第3章) 160
11.7.2 Promise模式(第6章) 160
11.7.3 Producer-Consumer模式(第7章) 160
11.7.4 Thread Specific Storage(線程特有存儲)模式 (第10章) 161
11.8 參考資源 161
第12章 Master-Slave(主仆)模式 162
12.1 Master-Slave模式簡介 162
12.2 Master-Slave模式的架構 162
12.3 Master-Slave模式實戰(zhàn)案例解析 164
12.4 Master-Slave模式的評價與實現考量 171
12.4.1 子任務的處理結果的收集 172
12.4.2 Slave參與者實例的負載均衡與工作竊取 173
12.4.3 可靠性與異常處理 1