第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
· · · · · · (
收起)