《Java并行程序设计》PDF下载

  • 购买积分:10 如何计算积分?
  • 作  者:张杨编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2015
  • ISBN:9787302392309
  • 页数:207 页
图书介绍:本教材是使学生掌握Java并发程序设计的基本原理和方法,熟悉并应用Java的相关接口进行并发编程,培养学生利用Java进行并发/并行程序设计的逻辑思维能力和编程能力。

第1章 绪论 1

1.1 概述 1

1.2 相关概念和术语 2

1.2.1 并发与并行 2

1.2.2 串行执行和顺序执行 4

1.2.3 线程安全与线程不安全 4

1.2.4 数据竞争 5

1.2.5 超线程 5

1.2.6 加速比 6

1.3 Java并发方面的特性 7

1.4 并发程序设计的方法 8

1.4.1 分治方法 8

1.4.2 流水线 8

1.4.3 消息传递 9

1.5 并行程序的评判标准 9

1.6 程序运行的相关问题说明 10

习题 11

第2章 线程 12

2.1 什么是线程 12

2.2 线程的状态 13

2.2.1 创建 13

2.2.2 就绪 13

2.2.3 运行 14

2.2.4 阻塞 14

2.2.5 终止 14

2.3 线程的创建 15

2.3.1 继承类Thread 15

2.3.2 实现Runnable接口 16

2.3.3 两种方法的比较 18

2.4 线程的属性 18

2.4.1 线程标识符 18

2.4.2 线程名 20

2.4.3 线程的优先级和调度 23

2.4.4 线程状态 26

2.4.5 守护线程 28

2.5 线程管理 31

2.5.1 join方法 32

2.5.2 sleep方法 35

2.5.3 yield方法 36

2.5.4 线程的中断 36

2.5.5 其他 38

2.6 线程分组 38

2.7 带返回值的线程 41

2.7.1 接口Callable 41

2.7.2 接口Future 41

2.7.3 Callable与Runnable的比较 45

习题 45

第3章 线程同步 46

3.1 概述 46

3.2 基本概念 48

3.2.1 临界区 48

3.2.2 监视器 49

3.2.3 阻塞和非阻塞 49

3.3 锁 49

3.3.1 同步锁 50

3.3.2 可重入锁 52

3.3.3 读写锁 60

3.3.4 三种锁机制的比较 66

3.3.5 锁的不足之处 66

3.4 volatile变量 67

3.5 原子操作 68

3.5.1 AtomicInteger 68

3.5.2 AtomicReference 71

3.5.3 其他 73

3.6 死锁和活锁 73

3.6.1 死锁 73

3.6.2 活锁 76

3.7 多核时代减少锁竞争的方法 78

习题 79

第4章 线程间通信 80

4.1 等待集合 80

4.2 wait、notify、notifyAll方法 80

4.2.1 方法wait 80

4.2.2 方法notify 81

4.2.3 方法notifyAll 81

4.2.4 实例 81

4.3 条件变量 88

4.3.1 方法await 89

4.3.2 方法signal 89

4.3.3 方法signalAll 89

4.3.4 实例 90

习题 93

第5章 线程同步障栅 94

5.1 障栅 94

5.2 倒计时门闩 99

5.3 信号量 102

5.4 同步队列 107

5.5 交换器 110

5.6 阶段化处理 114

习题 123

第6章 线程执行器 124

6.1 线程池 124

6.1.1 接口Executor 125

6.1.2 接口ExecutorService 125

6.1.3 类ThreadPoolExecutor 125

6.1.4 工厂类Executors 126

6.1.5 使用线程执行器处理无返回值的线程 127

6.2 固定数目的线程执行器 129

6.3 使用线程执行器处理有返回值的线程 131

6.4 延迟执行、周期性执行的执行器 134

6.4.1 接口ScheduledExecutorService 134

6.4.2 接口ScheduledFuture 135

6.4.3 举例 135

6.5 取消任务的执行 138

6.6 任务装载和结果处理的分离 140

6.7 管理被拒绝的任务 142

第7章 Fork/Join框架 145

7.1 概述 145

7.2 相关知识 146

7.2.1 负载均衡 146

7.2.2 分治方法 146

7.2.3 工作窃取算法 147

7.3 Fork/Join框架的编程模式 147

7.4 类ForkJoinPool 148

7.4.1 ForkJoinPool的创建 148

7.4.2 ForJoinPool的使用 149

7.5 任务 150

7.5.1 任务的创建 150

7.5.2 任务的运行方式 158

7.5.3 任务的取消 160

7.6 Fork/Join框架的限制 164

习题 164

第8章 自定义并发类 165

8.1 自定义线程工厂 165

8.2 自定义线程池 167

8.3 在执行器中使用自定义的线程工厂 169

8.4 自定义周期性任务 171

8.5 自定义与Fork/Join框架相关的并发类 175

8.5.1 类ForkJoinWorkerThread 175

8.5.2 接口ForkJoinPool.ForkJoinWorkerThreadFactory 176

8.5.3 自定义Fork/Join框架中的线程 176

8.5.4 自定义任务 179

8.6 自定义同步类 181

8.6.1 自定义锁 182

8.6.2 自定义原子操作 185

习题 187

第9章 线程安全的集合 188

9.1 线程安全的双端队列 188

9.2 线程安全的哈希表 192

9.3 线程安全的跳表 194

9.4 随机数产生 196

第10章 多线程程序的性能和测试 198

10.1 性能 198

10.2 可伸缩性 200

10.3 多线程程序的测试 200

第11章 面向方面编程在并行程序设计中的应用 201

11.1 面向方面编程相关知识简介 201

11.1.1 关注点的分离 201

11.1.2 方面 201

11.1.3 切点 202

11.1.4 通知 202

11.1.5 AspectJ工具 202

11.2 Java注释接口 204

11.3 应用示例 205

习题 207