编辑推荐
Java的线程API和并发工具类,是Java自身强大而富有挑战性的API及语言特性的一部分。Java新手往往很难用这些特性编写出正确的多线程应用程序。本书旨在帮助Java开发者掌握并高效地使用这些功能。本书分为两个部分,每部分包含4个章节。 第1部分关注于底层的线程API,而第2部分则关注于高级的并发工具类。第1部分介绍线程API的基础知识、同步、等待/通知以及线程组的额外能力,还有线程局部变量和定时器框架。第2部分介绍并发工具类的基础知识、Executor、同步器、锁框架,以及并发集合的额外能力、原子变量、Fork/Join框架和Completion Service。每一章节后都给出了一些练习题。这些练习题旨在测试你对章节内容的理解程度。附录A提供这些习题的答案。附录B介绍了如何在Swing图形用户接口工具集(Swing Graphical User Interface Tookit)中使用线程。通过本书,你将学习:● 创建、配置并启动运行runnable的线程;● 同步共享代码以避免竞态条件、数据竞争以及其他并发问题;● 避免缓存变量引发的问题;● 使用等待/通知机制协调多条线程;● 探索线程组并学习避免使用它们的原因;● 学习线程局部变量;● 探索定时器框架;● 学习引入并发工具类的原因;● 探索Executor、同步器以及锁框架;● 探索并发集合、原子变量、Fork/Join框架以及Completion Service;● 实验Sw i ng中的线程使用方式及其线程相关的API。
内容简介
Java线程和并发工具是应用开发中的重要部分,备受开发者的重视,也有一定的学习难度。 《Java线程与并发编程实践》是针对Java 8中的线程特性和并发工具的快速学习和实践指南。全书共8章,分别介绍了Thread类和Runnable接口、同步、等待和通知、线程组、定时器框架、并发工具、同步器、锁框架,以及高级并发工具等方面的主题。每章的末尾都以练习题的方式,帮助读者巩固所学的知识。附录A给出了所有练习题的解答,附录B给出了一个基于Swing线程的教程。 《Java线程与并发编程实践》适合有一定基础的Java程序员阅读学习,尤其适合想要掌握Java线程和并发工具的读者阅读参考。
目录
- 第一部分 线程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