Java多线程编程实战指南:设计模式篇(第2版)

作者
黄文海
丛书名
Java多线程编程实战系列
出版社
电子工业出版社
ISBN
9787121382451
简要
简介
内容简介书籍计算机书籍 随着CPU多核时代的到来,多线程编程在充分利用计算资源、提高软件服务质量方面扮演了越来越重要的角色。解决多线程编程中频繁出现的普遍问题可以借鉴设计模式所提供的现成解决方案。然而,多线程编程相关的设计模式图书多采用C++作为描述语言,且书中所举的例子多与应用开发人员的实际工作相去甚远。本书采用Java语言和UML为描述语言,并结合作者多年工作经历及相关实践经验,介绍了多线程环境下常用设计模式的来龙去脉:各个设计模式是什么样的、典型的实际应用场景、实际应用时需要注意的事项及各个设计模式的可复用代码实现。本书第2版除更正了第1版中的错误外,还新增了JDK 8、JDK 9中与多线程设计模式相关的内容,并对代码进行了重构和重新排版,使代码部分重点更突出、更易于阅读,以及提高了插图的清晰度。本书适合有一定Java多线程编程基础、经验的读者阅读。
目录
第1章 Java多线程编程实战基础\t1

1.1 无处不在的线程\t1

1.2 线程的创建与运行\t3

1.3 线程的状态与上下文切换\t5

1.4 对线程的监视\t8

1.5 原子性、内存可见性和重排序——重新认识synchronized

和volatile\t11

1.6 多线程编程的优势和风险\t13

1.7 多线程编程常用术语\t14

第2章 设计模式简介\t19

2.1 设计模式及其作用\t19

2.2 多线程设计模式简介\t22

2.3 设计模式的描述\t23

第3章 Immutable Object(不可变对象)模式\t25

3.1 Immutable Object模式简介\t25

3.2 Immutable Object模式的架构\t27

3.3 Immutable Object模式实战案例解析\t29

3.4 Immutable Object模式的评价与实现考量\t33

3.4.1 适用场景\t33

3.4.2 对垃圾回收(Garbage Collection)的影响\t34

3.4.3 使用等效或者近似的不可变对象\t35

3.4.4 防御性复制\t35

3.5 Immutable Object模式的可复用实现代码\t35

3.6 Java标准库实例\t35

3.7 相关模式\t37

3.7.1 Thread Specific Storage模式(第10章)\t37

3.7.2 Serial Thread Confinement模式(第11章)\t37

3.8 参考资源\t38

第4章 Guarded Suspension(保护性暂挂)模式\t39

4.1 Guarded Suspension模式简介\t39

4.2 Guarded Suspension模式的架构\t39

4.3 Guarded Suspension模式实战案例解析\t43

4.4 Guarded Suspension模式的评价与实现考量\t50

4.4.1 内存可见性和锁泄漏(Lock Leak)\t51

4.4.2 线程被过早地唤醒\t52

4.4.3 嵌套监视器锁死\t53

4.5 Guarded Suspension模式的可复用实现代码\t56

4.6 Java标准库实例\t56

4.7 相关模式\t56

4.7.1 Promise模式(第6章)\t57

4.7.2 Producer-Consumer模式(第7章)\t57

4.8 参考资源\t57

第5章 Two-phase Termination(两阶段终止)模式\t58

5.1 Two-phase Termination模式简介\t58

5.2 Two-phase Termination模式的架构\t59

5.3 Two-phase Termination模式实战案例解析\t61

5.4 Two-phase Termination模式的评价与实现考量\t70

5.4.1 线程停止标志\t71

5.4.2 生产者/消费者问题中的线程停止\t71

5.4.3 隐藏而非暴露可停止线程\t73

5.5 Two-phase Termination模式的可复用实现代码\t73

5.6 Java标准库实例\t73

5.7 相关模式\t74

5.7.1 Producer-Consumer模式(第7章)\t74

5.7.2 Master-Slave模式(第12章)\t74

5.8 参考资源\t74

第6章 Promise(承诺)模式\t75

6.1 Promise模式简介\t75

6.2 Promise模式的架构\t75

6.3 Promise模式实战案例解析\t78

6.4 Promise模式的评价与实现考量\t81

6.4.1 异步方法的异常处理\t82

6.4.2 轮询\t82

6.4.3 异步任务的执行\t83

6.5 Promise模式的可复用实现代码\t84

6.6 Java标准库实例\t85

6.7 相关模式\t85

6.7.1 Guarded Suspension模式(第4章)\t85

6.7.2 Active Object模式(第8章)\t86

6.7.3 Master-Slave模式(第12章)\t86

6.7.4 Factory Method(工厂方法)模式\t86

6.8 参考资源\t86

第7章 Producer-Consumer(生产者/消费者)模式\t87

7.1 Producer-Consumer模式简介\t87

7.2 Producer-Consumer模式的架构\t87

7.3 Producer-Consumer模式实战案例解析\t90

7.4 Producer-Consumer模式的评价与实现考量\t93

7.4.1 产品的粒度\t94

7.4.2 通道积压\t94

7.4.3 非阻塞式反压与Reactive Streams规范\t96

7.4.4 工作窃取算法\t97

7.4.5 线程的停止\t101

7.4.6 高性能、高可靠性的Producer-Consumer模式实现\t101

7.5 Producer-Consumer模式的可复用实现代码\t102

7.6 Java标准库实例\t102

7.7 相关模式\t102

7.7.1 Guarded Suspension模式(第4章)\t102

7.7.2 Thread Pool模式(第9章)\t103

7.8 参考资源\t103

第8章 Active Object(主动对象)模式\t104

8.1 Active Object模式简介\t104

8.2 Active Object模式的架构\t105

8.3 Active Object模式实战案例解析\t108

8.4 Active Object模式的评价与实现考量\t115

8.4.1 错误隔离\t117

8.4.2 缓冲区监控\t118

8.4.3 缓冲区饱和处理策略\t118

8.4.4 Scheduler空闲工作者线程清理\t119

8.5 Active Object模式的可复用实现代码\t119

8.6 Java标准库实例\t123

8.7 相关模式\t123

8.7.1 Promise模式(第6章)\t123

8.7.2 Producer-Consumer模式(第7章)\t123

8.8 参考资源\t124

第9章 Thread Pool(线程池)模式\t125

9.1 Thread Pool模式简介\t125

9.2 Thread Pool模式的架构\t126

9.3 Thread Pool模式实战案例解析\t128

9.4 Thread Pool模式的评价与实现考量\t130

9.4.1 工作队列的选择\t131

9.4.2 线程池大小调校\t132

9.4.3 线程池监控\t134

9.4.4 线程泄漏\t135

9.4.5 可靠性与线程池饱和处理策略\t135

9.4.6 死锁\t138

9.4.7 线程池空闲线程清理\t139

9.5 Thread Pool模式的可复用实现代码\t140

9.6 Java标准库实例\t140

9.7 相关模式\t140

9.7.1 Two-phase Termination模式(第5章)\t140

9.7.2 Promise模式(第6章)\t141

9.7.3 Producer-Consumer模式(第7章)\t141

9.8 参考资源\t141

第10章 Thread Specific Storage(线程特有存储)模式\t142

10.1 Thread Specific Storage模式简介\t142

10.2 Thread Specific Storage模式的架构\t144

10.3 Thread Specific Storage模式实战案例解析\t146

10.4 Thread Specific Storage模式的评价与实现考量\t149

10.4.1 在线程池环境下使用Thread Specific Storage模式\t153

10.4.2 内存泄漏与伪内存泄漏\t153

10.5 Thread Specific Storage模式的可复用实现代码\t161

10.6 Java标准库实例\t161

10.7 相关模式\t162

10.7.1 Immutable Object模式(第3章)\t162

10.7.2 Proxy(代理)模式\t162

10.7.3 Singleton(单例)模式\t162

10.8 参考资源\t162

第11章 Serial Thread Confinement(串行线程封闭)模式\t163

11.1 Serial Thread Confinement模式简介\t163

11.2 Serial Thread Confinement模式的架构\t163

11.3 Serial Thread Confinement模式实战案例解析\t166

11.4 Serial Thread Confinement模式的评价与实现考量\t170

11.5 Serial Thread Confinement模式的可复用实现代码\t171

11.6 Java标准库实例\t176

11.7 相关模式\t177

11.7.1 Immutable Object模式(第3章)\t177

11.7.2 Promise模式(第6章)\t177

11.7.3 Producer-Consumer模式(第7章)\t177

11.7.4 Thread Specific Storage模式(第10章)\t177

11.8 参考资源\t177

第12章 Master-Slave(主仆)模式\t178

12.1 Master-Slave模式简介\t178

12.2 Master-Slave模式的架构\t178

12.3 Master-Slave模式实战案例解析\t180

12.4 Master-Slave模式的评价与实现考量\t187

12.4.1 子任务处理结果的收集\t188

12.4.2 Slave参与者实例的负载均衡与工作窃取\t189

12.4.3 可靠性与异常处理\t190

12.4.4 Slave线程的停止\t190

12.5 Master-Slave模式的可复用实现代码\t190

12.6 Java标准库实例\t204

12.7 相关模式\t204

12.7.1 Two-phase Termination模式(第5章)\t204

12.7.2 Promise模式(第6章)\t204

12.7.3 Strategy(策略)模式\t204

12.7.4 Template(模板)模式\t205

12.7.5 Factory Method(工厂方法)模式\t205

12.8 参考资源\t205

第13章 Pipeline(流水线)模式\t206

13.1 Pipeline模式简介\t206

13.2 Pipeline模式的架构\t207

13.3 Pipeline模式实战案例解析\t212

13.4 Pipeline模式的评价与实现考量\t219

13.4.1 Pipeline的深度\t220

13.4.2 基于线程池的Pipe\t220

13.4.3 错误处理\t223

13.4.4 可配置的Pipeline\t224

13.5 Pipeline模式的可复用实现代码\t224

13.6 Java标准库实例\t236

13.7 相关模式\t236

13.7.1 Serial Thread Confinement模式(第11章)\t236

13.7.2 Master-Slave模式(第12章)\t237

13.7.3 Composite模式\t237

13.8 参考资源\t237

第14章 Half-sync/Half-async(半同步/半异步)模式\t238

14.1 Half-sync/Half-async模式简介\t238

14.2 Half-sync/Half-async模式的架构\t238

14.3 Half-sync/Half-async模式实战案例解析\t240

14.4 Half-sync/Half-async模式的评价与实现考量\t249

14.4.1 队列积压\t250

14.4.2 避免同步任务层处理过慢\t251

14.5 Half-sync/Half-async模式的可复用实现代码\t251

14.6 Java标准库实例\t256

14.7 相关模式\t256

14.7.1 Two-phase Termination模式(第5章)\t256

14.7.2 Producer-Consumer模式(第7章)\t256

14.7.3 Active Object模式(第8章)\t256

14.7.4 Thread Pool模式(第9章)\t257

14.8 参考资源\t257

第15章 模式语言\t258

15.1 设计模式之间的联系\t258

15.2 Immutable Object模式\t260

15.3 Guarded Suspension模式\t261

15.4 Two-phase Termination模式\t262

15.5 Promise模式\t263

15.6 Producer-Consumer模式\t264

15.7 Active Object模式\t265

15.8 Thread Pool模式\t266

15.9 Thread Specific Storage模式\t267

15.10 Serial Thread Confinement模式\t268

15.11 Master-Slave模式\t269

15.12 Pipeline模式\t270

15.13 Half-sync/Half-async



有问题微信扫码联系

推荐

Understand China
桂ICP备20004708号-4