第 一部分 线程API
第 1章 Thread和Runnable 2
1.1 Thread和Runnable简介 2
1.1.1 创建Thread和Runnable对象 3
1.1.2 获取和设置线程状态 4
1.1.3 获取和设置线程的名称 5
1.1.4 获取一条线程的存活状态 5
1.1.5 获取一条线程的执行状态 6
1.1.6 获取和设置线程的优先级 6
1.1.7 获取和设置线程的守护线程状态 8
1.1.8 启动线程 9
1.2 操作更高 级的线程任务 12
1.2.1 中断线程 12
1.2.2 等待线程 16
1.2.3 线程睡眠 20
1.3 练习 23
1.4 小结 24
第 2章 同步 26
2.1 线程中的问题 26
2.1.1 竞态条件 26
2.1.2 缓存变量 29
2.2 同步临界区的访问 30
2.2.1 使用同步方法 32
2.2.2 使用同步块 33
2.3 谨防活跃性问题 34
2.4 Volatile和Final变量 39
2.5 练习 48
2.6 小结 50
第3章 等待和通知 52
3.1 等待/通知API一览 52
3.2 生产者和消费者 55
3.3 练习 65
3.4 小结 66
第4章 额外的线程能力 67
4.1 线程组 67
4.2 线程局部变量 73
4.3 定时器框架 77
4.3.1 深入Timer 81
4.3.2 深入TimerTask 85
4.4 练习 87
4.5 小结 88
第 二部分 并发工具类
第5章 并发工具类和Executor框架 90
5.1 探索Executor 91
5.2 练习 103
5.3 小结 105
第6章 同步器 106
6.1 倒 计时门闩 106
6.2 同步屏障 111
6.3 交换器 119
6.4 信号量 126
6.5 信号量和公平策略 127
6.6 Phaser 136
6.7 练习 139
6.8 小结 140
第7章 锁框架 142
同步及低级别的锁 142
7.1 锁 143
7.2 重入锁 145
7.3 条件 149
7.4 读写锁 157
7.5 重入读写锁 158
7.6 练习 165
7.7 小结 166
第8章 额外的并发工具类 167
8.1 并发集合 167
8.1.1 使用BlockingQueue和ArrayBlockingQueue 169
8.1.2 深入学习ConcurrentHashMap 172
8.2 原子变量 173
8.3 Fork/Join框架 179
8.4 Completion Service 190
8.5 练习 194
8.6 小结 196
第三部分 附录
附录A 练习题答案 198
第 1章:Thread和Runnable 198
第 2章:同步 201
第3章:等待和通知 205
第4章:额外的线程能力 208
第5章:并发工具类和Executor框架 211
第6章:同步器 215
第7章:锁框架 220
第8章:额外的并发工具 222
附录B Swing中的线程 225
单线程编程模型 225
线程化API 231
SwingUtilities和EventQueue 231
SwingWorker 240
定时器 245
基于定时器的幻灯片展示 249