《深入学习:Java多线程编程》PDF下载

  • 购买积分:11 如何计算积分?
  • 作  者:(美)Bil Lewis,(美)Daniel J.Berg著;关欣,史宗海等译
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2000
  • ISBN:7505363697
  • 页数:278 页
图书介绍:

前言页 1

第1章 简介 1

第2章 概念 4

2.1 背景:传统操作系统 4

2.2 何谓线程 6

2.3 内核交互作用 8

2.3.1 并发性与并行性 8

2.4 使用线程的价值 9

2.3.5 调度 9

2.3.4 同步 9

2.3.3 信号 9

2.3.2 系统调用 9

2.4.1 并行性 10

2.4.2 吞吐量 10

2.4.3 反应能力 11

2.4.4 通信 11

2.4.5 系统资源 12

2.4.6 分布式对象 12

2.5.1 固有MT程序 13

2.5 哪类程序适合线程 13

2.4.7 一个程序可用于单处理器,也可用于多处理器 13

2.4.8 程序结构 13

2.5.2 不太明显的MT程序 14

2.5.3 自动编线程 14

2.5.4 不适于线程的程序 15

2.6 何谓共享内存 15

2.7 线程标准 15

2.8 性能 16

2.8.1 操作系统 16

2.8.2 NFS 16

2.8.3 SPECfp95 17

2.8.4 SPECint-rate95 17

2.8.5 Java基准程序 17

2.9 小结 17

第3章 基础 18

3.1 实现与规范 18

3.2 线程库 18

3.3 进程结构 19

3.4 轻量进程 20

3.4.1 线程和LWP 21

3.5 POSIX多线程模型 23

3.6 系统调用 23

3.7 信号 25

3.8 小结 25

第4章 生存期 26

4.1 线程生存期 26

4.1.2 可运行接口 27

4.1.1 退出线程 27

4.1.3 等待线程 28

4.1.4 当前线程 29

4.1.5 退出进程 30

4.1.6 挂起线程 30

4.1.7 注销 30

4.1.8 ThreadDeath 31

4.1.9 垃圾收集线程 31

4.1.12 再启动线程 32

4.1.11 线程还有效吗 32

4.1.10 Zombie 32

4.1.13 示例:创建和连接 33

4.2 本章中使用的API 37

4.2.1 java.lang.Thread类 37

4.2.2 Extensions.Interruptible Thread类 39

4.2.3 java.lang.Runnable接口 39

4.3 小结 39

5.1.1 很多线程在一个LWP 40

5.1 各种内核调度模型 40

第5章 作业调度 40

5.1.2 每人LWP一个线程 41

5.1.3 多LWP上的多线程(严格) 41

5.1.4 两级模型 41

5.2 线程调度 42

5.2.1 进程争用域 43

5.2.2 系统争用域 46

5.3 现场转换 46

5.3.2 需要多少LWP 48

5.3.1 抢先 48

5.3.4 修改LWP的调度参数 49

5.3.3 如何在Java中取得这些LWP 49

5.3.5 实时LWP 50

5.3.6 分配域 50

5.3.7 将LWP联编到处理器 50

5.4 Java调度小结 51

5.6 本章中使用的API 52

5.6.1 java.lang.Thread类 52

5.5 何时需要关心调度 52

5.7 小结 53

第6章 同步 54

6.1 同步问题 54

6.1.1 原子动作和原子指令 54

6.1.2 关键段 55

6.1.3 锁定共享数据 55

6.2 同步变量 56

6.2.1 互斥 56

6.2.2 信号量 61

6.2.3 条件变量 65

6.2.4 Java等待/通知 67

6.2.5 InterruptedException 68

6.2.6 控制队列长度 69

6.2.7 Java中的POSIX同步方式 71

6.3 本章中使用的API 77

6.3.1 java.lang.Object类 77

6.3.4 Extensions.Condition Var类 78

6.3.3 Extensions.Mutex类 78

6.3.2 Extensions.Semaphore类 78

6.4 小结 79

第7章 复杂同步 80

7.1 复杂锁定单元 80

7.1.1 读/写锁 80

7.1.2 估先级继承互斥 83

7.1.3 FIFO互斥 84

7.1.4 递归互斥 84

7.1.6 自旋锁 85

7.1.5 非阻塞同步 85

7.2 超时 86

7.2.1 Elvis和UFO 87

7.3 其他同步变量 88

7.3.1 连接 88

7.3.2 阻挡层 88

7.3.3 单阻挡层 89

7.3.4 Win32事件对象 90

7.3.8 消息队列 91

7.3.9 Win32 I/O完成口 91

7.3.5 Win32关键段 91

7.3.7 互锁指令 91

7.3.6 多等待信号量 91

7.3.10 通过流进行通信 92

7.4 易变性 92

7.5 性能 92

7.5.1 条件变量与等待/通知 92

7.5.3 锁定什么 93

7.5.2 粗锁与细锁 93

7.5.4 双检锁定 94

7.6 同步问题 95

7.6.1 死锁 95

7.6.2 竞争条件 97

7.6.3 恢复死锁 97

7.6.4 丢失唤醒 98

7.6.5 InterruptedException 99

7.7.2 Extensions.Barrier类 100

7.7.1 Extensions.RWlock类 100

7.7 本章中使用的API 100

7.7.3 Extensions.SingleBarrier 101

7.8 小结 102

第8章 TSD 103

8.1 线程定义的数据 103

8.2 Java TSD 105

8.3 本章中的API 107

8.3.1 java.lang.ThreadLocal类 107

8.4 小结 107

9.1 何谓取消 108

第9章 取消 108

9.1.1 轮询取消 109

9.1.2 异步取消 109

9.1.3 延迟取消 109

9.1.4 用interrupt()取消延迟 109

9.1.5 逐次关闭 110

9.2 interrupt() 110

9.2.2 ThreadDeath 111

9.2.3 使用stop()实现Thread.exit() 111

9.2.1 不要调用stop() 111

9.2.4 不要退出线程 112

9.2.5 规定的取消/中断点 112

9.2.6 不要在中断时取消 113

9.2.7 管理中断 114

9.2.8 取消状态 117

9.3 一个取消的实例 118

9.4 使用取消 122

9.4.1 保证有限的CPU时间 123

9.4.3 麻烦的结果 125

9.4.2 中断睡眠线程 125

9.5 清理 126

9.6 实现enableInterrupts() 127

9.7 一个取消处理的实例(改进版) 129

9.8 简单的轮询 129

9.9 本章中使用的API 130

9.9.1 java.lang.Thread类 130

9.9.2 Extensions.Interruptible Thread类 130

9.10 小结 131

10.1 线程组 132

第10章 细节 132

10.2 线程安全性 133

10.2.1 实例 136

10.2.2 一般提示 138

10.3 守护进程线程 138

10.4 守护进程线程组 139

10.5 调用本机程序 139

10.8 使用JIT(即时)的效果 141

10.7 被禁用的方法 141

10.6 几个相关的方法 141

10.6.1 栈的大小 141

10.8.1 自适应编译程序 142

10.9 本章中使用的API 142

10.9.1 java.lang.Thread类 142

10.9.2 java.lang.ThreadGroup类 143

10.10 小结 147

第11章 库 148

11.1 本机线程库 148

11.2 多线程内核程序 148

11.2.1 对称多进程 149

11.3 库的安全性 150

11.3.1 窗口系统 151

11.3.2 使用不安全库 153

11.3.3 何时要同步一个类 154

11.3.4 Java2 中的同步收集 154

11.4.1 结束时的锁定 155

11.5 小结 155

11.4 Java的多线程垃圾收集程序 155

第12章 设计 156

12.1 库的安全和热点 156

12.1.1 使malloe()并发性更好 158

12.2 操作列表 160

12.1.1 单线程、全局线程及其互斥 161

12.2.2 带全局互斥保护数据的全局读写锁(RWLock) 162

12.2.3 带局部互斥保护数据的全局读写锁(RWLock) 163

12.2.4 一个局部锁 164

12.2.5 两个局部锁 165

12.2.6 带局部互斥的局部读写锁(RWLock) 165

12.3 程序设计 166

12.4 设计模型 169

12.5 小结 170

第13章 RMI 171

13.1 远程方法调用(RMI) 171

13.1.1 发送远程引用 172

13.2 小结 178

13.1.4 远程垃圾收集 178

13.1.2 RMI使用的线程 178

13.1.3 RMI的死锁问题 178

第14章 工具 180

14.1 静态锁分析器 180

14.2 使用Thread-Aware、Graphical Debugger 180

14.3 Proctool 182

14.4 TNFview 183

14.5 小结 187

15.1 优化:对象与缺点 188

第15章 性能 188

15.2 CPU时间、I/O时间、竞争 190

15.2.1 CPU 190

15.2.2 内存延迟 190

15.2.3 内存带宽 191

15.2.4 I/O等待 191

15.2.5 竞争 191

15.2.6 吞吐量与等待时间 191

15.3 加速的局限 192

15.3.1 Amdahl定律 194

15.3.2 性能瓶颈 195

15.4 基准的和可重复的测试 195

15.4.1 是真快吗 196

15.4.2 总体性能优化 197

15.4.3 特定线程的性能优化 199

15.4.4 处理多个开路套接字 200

15.5 关于NFS 201

15.6 小结 202

16.1.1 共享存储器的对称多处理器 203

16.1 多处理器类型 203

第16章 硬件 203

16.2 总线结构 205

16.2.1 LoadLockked/StoreConditional和比较与交换 210

6.2.2 易变性 212

16.3 内存系统 213

16.3.1 减少高速缓存的未命中率 213

16.4 小结 215

第17章 范例 216

17.1 线程与窗口 216

17.2 显示瞬间情况(Memory.java) 221

17.3 套接字服务器(主/从版) 222

17.4 套接字服务器(生产者/消费者版) 223

17.5 进行本机调用pthread_setconcurreney() 230

17.6 POSIX同步的真正实现 231

17.7 鲁棒型中断服务器 233

17.8 用于Java的磁盘性能 243

17.9 Web上的其他程序 248

17.10 小结 248

A.2 程序清单 249

A.3 供应商的线程页面 249

附录A Internet 249

A.1 线程新闻组 249

A.4 线程研究 250

A.5 免费工具 250

A.6 其他指针 250

A.7 作者网址 251

B.1.2 POSIX线程 252

B.1.1 Java线程 252

B.1 介绍线程的参考书 252

附录B 参考书 252

B.1.3 Win32线程 253

B.2 相关的参考书 253

附录C 定时 255

附录D API 258

D.1 函数说明 258

D.2 java.lang.Thread类 258

D.5 java.lang.ThreadLocal类 263

D.4 java.lang.Object类 263

D.3 java.lang.Runnable接口 263

D.6 java.lang.ThreadGroup类 264

D.7 Extensions.Interruptible Thread类 268

D.8 Extensions.Semaphore类 268

D.9 Extensions.Mutex类 269

D.10 Extensions.Condition Var类 269

D.11 Extensions.RWLock类 270

D.12 Extensions.Barrier类 270

D.13 Extensions.SingleBarrier类 271

词汇 272