前言 1
第一章 线程简介 7
Java术语 7
线程概述 9
为什么要使用线程? 13
总结 17
第二章 Java线程API 18
通过Thread类创建线程 18
使用Runable接口的线程 26
线程的生命周期 31
线程命名 35
访问线程 38
线程的启动、停止和连接 41
总结 45
第三章 同步技术 48
银行的例子 48
异步读取数据 52
一个进行同步操作的类 58
同步块 62
嵌套锁 64
死锁 67
返回到银行的例子 70
同步静态方法 73
总结 75
第四章 等待和通知 76
返回到银行的例子 76
等待和通知 78
wait()、notify()和notifyAll() 83
wait()和sleep() 87
线程中断 89
静态方法(有关同步的细节) 95
总结 96
第五章 Java线程编程的例子 98
数据结构和容器 98
简单的同步例子 104
一个网络服务器类 112
AsyncInputStream类 120
使用TCPServer和AsyncInputStream 134
总结 134
第六章 Java线程调度 136
线程调度概述 137
何时调度是重要的 149
调度和线程优先级 151
常见的调度实现 156
本地调度支持 167
其他线程调度方法 171
总结 182
第七章 Java线程调度例子 184
线程池 185
循环调度 192
作业调度 208
总结 214
第八章 和同步相关的高级主题 216
同步术语 216
预防死锁 218
锁饥饿 227
非线程安全的类 242
总结 254
第九章 多处理器机器上的并行化 255
单线程程序并行化 256
内层循环线程化 276
循环输出 281
多处理器扩展 284
总结 295
线程组概念 296
第十章 线程组 296
创建线程组 297
线程组方法 300
操作线程组 306
线程组、线程和安全 308
总结 314
附录一 其他主题 319
附录二 异常和错误 329
词汇表 337