1、2020Java多线程编程实战指南(核心篇)演讲人 2025-11-1101本书内容及特色本书内容及特色02目标读者目标读者03本书约定本书约定04配套源码下载配套源码下载05与作者联系与作者联系06读者服务读者服务07第一部分 多线程编程基础1 走近Java世界中的线程第一部分 多线程编程基础1.2 多线程编程简介1.2.2 为什么使用多线程1.3.1 线程的创建、启动与运行1.1 进程、线程与任务1.2.1 什么是多线程编程1.3 Java线程API简介第一部分 多线程编程基础1 走近Java世界中的线程1.3.2 Runnable接口1.3.4 Thread类的常用方法1.4 无处不在的
2、线程1.3.3 线程属性1.3.5 Thread类的一些废弃方法1.5 线程的层次关系1 走近Java世界中的线程第一部分 多线程编程基础1.7 线程的监视1.9 多线程编程的优势和风险1.6 线程的生命周期状态1.8 多线程编程简单运用实例1.10 本章小结2 线程编程的目标与挑战第一部分 多线程编程基础2.2 竞态2.2.2 竞态的模式与竞态产生的条件2.4 原子性2.1 串行、并发与并行2.2.1 二维表分析法:解释竞态的结果2.3 线程安全性2 线程编程的目标与挑战第一部分 多线程编程基础2.5 可见性2.6 有序性2.6.1 重排序的概念2.6.4 貌似串行语义2.6.3 存储子系统
3、重排序2.6.2 指令重排序2 线程编程的目标与挑战第一部分 多线程编程基础2.7 上下文切换2.7.2 上下文切换的分类及具体诱因2.8 线程的活性故障2.6.5 保证内存访问的顺序性2.7.1 上下文切换及其产生原因2.7.3 上下文切换的开销和测量第一部分 多线程编程基础2 线程编程的目标与挑战2.9 资源争用与调度2.10 本章小结3 Java线程同步机制第一部分 多线程编程基础3.2 锁概述3.2.2 与锁相关的几个概念3.3 内部锁:synchronized关键字3.1 线程同步机制简介3.2.1 锁的作用3.2.3 锁的开销及其可能导致的问题3 Java线程同步机制第一部分 多线
4、程编程基础3.5 锁的适用场景3.4.4 改进型锁:读写锁3.4.3 内部锁还是显式锁:锁的选用3.4.2 显式锁与内部锁的比较3.4.1 显式锁的调度3.4 显式锁:Lock接口第一部分 多线程编程基础3 Java线程同步机制ABCDEF3.6 线程同步机制的底层助手:内存屏障3.7 锁与重排序3.8 轻量级同步机制:volatile关键字3.8.1 volatile的作用3.8.2 volatile变量的开销3.8.3 volatile的典型应用场景与实战案例LOGOM.94275.CN第一部分 多线程编程基础3 Java线程同步机制013.9 实践:正确实现看似简单的单例模式023.10
5、 CAS与原子变量033.10.1 CAS043.10.2 原子操作工具:原子变量类053.11 对象的发布与逸出063.11.1 对象的初始化安全:重访final与static第一部分 多线程编程基础3 Java线程同步机制3.11.2 安全发布与逸出3.12 本章小结第一部分 多线程编程基础4 牛刀小试:玩转线程4.1 挖掘可并发点014.2 新战场上的老武器:分而治之024.3 基于数据的分割实现并发化034.4 基于任务的分割实现并发化044.4.1 按任务的资源消耗属性分割054.4.2 实战案例的启发064 牛刀小试:玩转线程第一部分 多线程编程基础4.4.3 按处理步骤分割4.5
6、 合理设置线程数4.6 本章小结4.5.2 线程数设置的原则4.5.1 Amdahls定律5 线程间协作AEDFBC5.1.1 wait/notify的作用与用法5.1.2 wait/notify的开销及问题5.1.4 wait/notify与Thread.join()5.1.3 Object.notify()/notifyAll()的选用5.2 Java条件变量5.1 等待与通知:wait/notify5 线程间协作AEDFBC5.4 栅栏(CyclicBarrier)5.5 生产者消费者模式5.5.2 限购:流量控制与信号量(Semaphore)5.5.1 阻塞队列5.5.3 管道:线程间
7、的直接输出与输入5.3 倒计时协调器:CountDownLatch5 线程间协作5.5.4 一手交钱,一手交货:双缓冲与Exchanger5.5.5 一个还是一批:产品的粒度5.5.6 再探线程与任务之间的关系5.6 对不起,打扰一下:线程中断机制5.7 线程停止:看似简单,实则不然5.7.1 生产者消费者模式中的线程停止0103020405065 线程间协作5.8 本章小结5.7.2 实践:Web应用中的线程停止5 线程间协作5.4 栅栏(CyclicBarrier)CyclicBarrier的典型应用场景5 线程间协作5.6 对不起,打扰一下:线程中断机制InterruptedExcept
8、ion异常处理及中断响应6 保障线程安全的设计技术第一部分 多线程编程基础6.1 Java运行时存储空间6.3 以“不变”应万变:不可变对象6.4.1 线程特有对象可能导致的问题及其规避6.2 大公无私:无状态对象6.4 我有我地盘:线程特有对象6.4.2 线程特有对象的典型应用场景第一部分 多线程编程基础6 保障线程安全的设计技术6.5 装饰器模式6.6 并发集合6.7 本章小结7 线程的活性故障第一部分 多线程编程基础7.1 鹬蚌相争:死锁7.1.1 死锁的检测7.1.2 死锁产生的条件与规避7.2.1 信号丢失锁死7.2 沉睡不醒的睡美人:锁死7.1.3 死锁的恢复01020304050
9、6第一部分 多线程编程基础7 线程的活性故障7.2.2 嵌套监视器锁死7.3 巧妇难为无米之炊:线程饥饿7.4 屡战屡败,屡败屡战:活锁7.5 本章小结8 线程管理第一部分 多线程编程基础8.2 可靠性:线程的未捕获异常与监控8.4 线程的暂挂与恢复8.5.1 任务的处理结果、异常处理与取消8.1 线程组8.3 有组织有纪律:线程工厂8.5 线程的高效利用:线程池LOGOM.94275.CN第一部分 多线程编程基础8 线程管理8.5.2 线程池监控018.5.3 线程池死锁028.5.4 工作者线程的异常终止038.6 本章小结04第一部分 多线程编程基础9 Java异步编程19.1 同步计算
10、与异步计算39.2.1 实用工具类Executors59.3 异步计算助手:FutureTask29.2 Java Executor框架49.2.2 异步任务的批量执行:CompletionService69.3.1 实践:实现XML文档的异步解析9 Java异步编程第一部分 多线程编程基础019.3.2 可重复执行的异步任务029.4 计划任务039.5 本章小结第一部分 多线程编程基础10 Java多线程程序的调试与测试10.1 多线程程序的调试技巧0110.1.1 使用监视点0210.1.2 设置暂挂策略0310.2 多线程程序的测试0410.2.1 可测试性0510.2.2 静态检查工
11、具:FindBugs06第一部分 多线程编程基础10 Java多线程程序的调试与测试10.2.4 多线程程序的单元测试:JCStress贰10.2.3 多线程程序的代码复审壹10.3 本章小结叁08第二部分 多线程编程进阶第二部分 多线程编程进阶11 多线程编程的硬件基础与Java内存模型12 Java多线程程序的性能调校LOGOM.94275.CN第二部分 多线程编程进阶11 多线程编程的硬件基础与Java内存模型11.1 填补处理器与内存之间的鸿沟:高速缓存0111.3 硬件缓冲区:写缓冲器与无效化队列0311.3.2 再探内存重排序0511.2 数据世界的交通规则:缓存一致性协议0211
12、.3.1 存储转发0411.3.3 再探可见性06第二部分 多线程编程进阶11 多线程编程的硬件基础与Java内存模型11.5.1 volatile关键字的实现11.5 Java同步机制与内存屏障11.5.3 Java虚拟机对内存屏障使用的优化11.5.4 final关键字的实现11.4 基本内存屏障11.5.2 synchronized关键字的实现010203040506第二部分 多线程编程进阶11 多线程编程的硬件基础与Java内存模型11.6 Java内存模型0111.6.1 什么是Java内存模型0211.6.2 happen(s)-before关系0311.6.3 再探对象的安全发布
13、0411.6.4 JSR 1330511.7 共享变量与性能06第二部分 多线程编程进阶11 多线程编程的硬件基础与Java内存模型11.8 本章小结第二部分 多线程编程进阶12 Java多线程程序的性能调校12.1 Java虚拟机对内部锁的优化0112.1.1 锁消除0212.1.2 锁粗化0312.1.3 偏向锁0412.1.4 适应性锁0512.2 优化对锁的使用06第二部分 多线程编程进阶12 Java多线程程序的性能调校12.2.1 锁的开销与锁争用监视0112.2.2 使用可参数化锁0212.2.3 减小临界区的长度0312.2.4 减小锁的粒度0412.2.5 考虑锁的替代品0512.3 减少系统内耗:上下文切换06第二部分 多线程编程进阶12 Java多线程程序的性能调校0112.4 多线程编程的“三十六计”:多线程设计模式0212.5 性能的隐形杀手:伪共享0312.5.1 Java对象内存布局0412.5.2 伪共享的侦测与消除0512.6 本章小结09Web参考资源Web参考资源感谢聆听