第 1 章 开宗明义【不看错过一个亿】
1-1 课程综述——特点和内容介绍 (16:07)
第 2 章 跨越第一座山“线程八大核心”【适用于纵观全貌】
2-1 纵观全貌——线程八大核心 (16:13)
2-2 抛砖引玉——初识八大基础 (09:18)
2-3 本课涉及的【并发高频面试题】文档梳理(持续更新)
第 3 章 核心 1:实现多线程的正确姿势【解读官方文档,够权威】
3-1 迷雾重重——实现多线程的方法到底是几种?(13:40)
3-2 无独有偶——同时使用两种方法;正确实现方法的总结 (07:14)
3-3 偏信则暗——典型错误观点 (12:35)
3-4 授人以渔——彩蛋:【优质学习路径】(09:57)
3-5 日新月异——彩蛋:【如何了解技术前沿动态?】(05:39)
3-6 奋发蹈厉——彩蛋:【如何在业务缠身的情况下让技术快速成长?】(06:47)
3-7 眼前一亮——实现多线程常见面试问题 (04:19)
第 4 章 核心 2:开启多线程启动的世界
4-1 初出茅庐——启动线程的正确姿势 (04:52)
4-2 起承转合——start()方法原理解读 (10:25)
4-3 中流砥柱——run()方法原理解读 (01:22)
4-4 天缘凑合——彩蛋:【Java 名字由来的奇闻轶事】(04:40)
4-5 启动线程——常见面试问题 (02:01)
第 5 章 核心 3:线程停止、中断之最佳实践【填“坑”式教学,从错误到正确】
5-1 偃旗息鼓——停止线程 (09:08)
5-2 奉公守法——牢记线程启停原则,做优秀的线程掌控者 (05:11)
5-3 普通情况——停止线程的最佳实践 (09:01)
5-4 遭遇阻塞——当停止线程遇到线程阻塞,怎么办?(13:58)
5-5 大跌眼镜——这是 bug 吗?自动清除中断信号 (06:13)
5-6 最佳实践——中断线程的两种姿势之优先抛出 (15:35)
5-7 官复原职——中断线程的两种姿势之恢复中断 (08:22)
5-8 耳听八方——网罗响应线程中断的 N 种方法 (02:11)
5-9 不速之客——彩蛋:【Java 异常体系】(05:04)
5-10 戛然而止——错误的停止线程方法之一 -stop(模拟军队发放武器)(10:57)
5-11 看似可行——错误的停止线程方法之二 -volatile 的标记位 (14:09)
5-12 跌跌跄跄——volatile 在生产者模式下失效【路走错了,莫慌,回头是岸】(12:53)
5-13 直击本质——彩蛋:【分析 native 层代码——以 interrupt 为例】(09:25)
5-14 明辨是非——练习:判断 interrupt 状态的方法辨析 (08:38)
5-15 停止线程——常见面试问题 (04:24)
第 6 章 核心 4:图解线程生命周期【适用于面试】
6-1 纵观天下——线程六种状态 (02:27)
6-2 一图千言——六个状态的含义和转化路径 (11:09)
6-3 眼见为实——演示前 3 种状态:NEW、RUNNABLE、TERMINATED (08:48)
6-4 眼见为实——演示后 3 种状态:BLOCKED、WAITING、TIMED_WAITING (07:00)
6-5 生命周期——状态转换的注意点、阻塞的定义、面试问题 (07:14)
第 7 章 核心 5:趣解 Thread 和 Object 类中线程相关方法【只学有用的】
7-1 中流砥柱——七个重要方法概览 (11:15)
7-2 你方唱罢——wait 的作用和用法 (15:28)
7-3 我方登场——notify 与 notifyAll 的区别 (09:17)
7-4 忠心耿耿——wait 只释放当前 monitor (07:43)
7-5 一针见血——wait-notify 的原理、特点 (06:47)
7-6 生产消费——用 wait/notify 实现 (14:10)
7-7 你来我往——两个线程交替打印 0~100 的奇偶数 (21:38)
7-8 面试问题——wait 相关高频面试题 (08:15)
7-9 熟悉陌生——彩蛋:Java 相关概念辨析,JDK、JRE、JVM、Java SE (07:01)
7-10 各持己见——sleep 方法概览、不释放锁 (11:17)
7-11 阳春白雪——sleep 响应中断、优雅写法、一句话总结、面试问题 (10:51)
7-12 拭目以待——join 的作用和普通用法 (06:00)
7-13 望穿秋水——join 遇到中断、join 期间线程状态的两种查看方式 (11:19)
7-14 孪生兄弟——join 注意点、原理、源码分析、替代写法、面试问题 (11:30)
7-15 孔融让梨——yield 的作用、定位、和 sleep 的区别、currentThread 举例 (07:01)
第 8 章 核心 6:一网打尽线程属性
8-1 庖丁解牛——线程重要属性概览 (04:10)
8-2 对号入座——线程 ID (05:27)
8-3 守护天使——线程名字、守护线程 (08:45)
8-4 上上之选——线程优先级、4 个属性总结、线程属性面试问题 (08:23)
第 9 章 核心 7:线程异常处理知多少?
9-1 居安思危——需要 UncaughtException 的 3 个理由 (14:35)
9-2 层层递进——异常处理器的调用策略 (04:31)
9-3 线程异常——自己实现并处理异常;常见面试问题 (09:39)
第 10 章 核心 8:追寻并发的崇高理想 - 线程安全【日常开发工作常用】
10-1 崇高理想——并发安全总起 (06:52)
10-2 线程安全——权威定义和通俗易懂的解读 (08:11)
10-3 神出鬼没——三大线程安全问题之一:结果错误,a++ 会让加的次数莫名消失 (10:27)
10-4 不断进击——a++ 具体在哪里消失?又消失了几个呢?(上)(15:53)
10-5 不断进击——a++ 具体在哪里消失?又消失了几个呢?(下)(17:18)
10-6 互不相让——死锁发生 (06:44)
10-7 逃出生天——逸出 private 对象的后果 (06:13)
10-8 你中有我——this 赋值 (06:04)
10-9 心急火燎——隐藏的风险:注册监听器 (06:32)
10-10 时不我待——构造函数中新建线程 (04:30)
10-11 狸猫太子——用“副本”代替“真身”(03:15)
10-12 工厂模式——妙用来解决逸出 (04:55)
10-13 面面俱到——四种需要考虑线程安全的情况 (03:31)
10-14 伤敌一千——为什么多线程会有性能问题?:上下文切换、内存同步 (11:30)
10-15 自损八千——双刃剑总结 (09:35)
第 11 章 多线程的八大核心【最终回】
11-1 对答如流——八大核心面试问题总结 (06:51)
11-2 全面总结——八大核心重点回顾 (17:33)
11-3 思维导图——八大核心梳理,资料下载地址
第 12 章 深入浅出并发编程底层原理 - 上篇
12-1 纵观全貌——Java 内存模型思维导图概览 (17:12)
12-2 自顶向下——彩蛋:【自顶向下学习方法的好处】(13:08)
12-3 刨根问底——什么是“底层原理”?为什么要研究“底层原理”?(05:39)
12-4 兄弟齐心——JVM 内存结构、Java 内存模型、Java 对象模型 (09:37)
12-5 难分伯仲——JMM 是什么?重排序、可见性、原子性简介 (07:38)
12-6 眼见为实——重排序的前三种可能性 (14:28)
12-7 意料之外——真正发生重排序 (04:45)
12-8 化零为整——重排序的好处和 3 种发生时机、重排序总结 (04:57)
12-9 一叶障目——可见性总起 (02:54)
12-10 只见树木——演示可见性问题 (13:45)
12-11 不见森林——为什么会有可见性问题?(04:56)
12-12 化繁为简——JMM 的抽象:主内存和本次内存 (06:29)
12-13 瞻前顾后——什么是 happens-before?(05:07)
12-14 逐一列出——happens-before 有哪些规则?(14:30)
12-15 学以致用——利用 happens-before 解决之前的问题,只加一个 volatile (05:28)
第 13 章 深入浅出并发编程底层原理 - 下篇
13-1 神兵利器——volatile 关键字概览 (05:27)
13-2 没有银弹——volatile 不适用于 a ++ (05:12)
13-3 雷厉风行——volatile 适用场合之一:纯赋值操作 (07:18)
13-4 一触即发——volatile 适用场合之二:触发器 (03:48)
13-5 能者多劳——volatile 的两点作用;和 synchronized 的关系;volatile 的总结 (05:41)
13-6 温故知新——可见性对 synchronized 的升华、能保证可见性的措施、可见性总结 (09:13)
13-7 密不可分——什么是原子性?Java 中的原子操作有哪些?(08:55)
13-8 无需多虑——long 和 double 的原子性、原子操作的组合不具备原子性 (07:06)
13-9 独一无二——单例模式与 JMM 的联系 (08:12)
13-10 车到山前——懒汉式的 3 种写法 (06:35)
13-11 万无一失——JMM 的典型应用:双重检查模式 (11:31)
13-12 最佳实践——静态内部类写法、枚举写法 (05:59)
13-13 一争高下——哪种实现方案最好?单例模式总结 (09:23)
13-14 正中下怀——常见面试问题:谈谈 JMM (07:26)
13-15 整章总结——Java 内存模型重点回顾 (17:58)
13-16 思维导图——Java 内存模型梳理,资料下载地址
第 14 章 并发死锁问题与企业级解决方案
14-1 至死方休——死锁问题概览 (10:35)
14-2 切瑳琢磨——考考你 (02:36)
14-3 一图千言——什么是死锁?(05:07)
14-4 墨菲定律——死锁发生几率不高,但危害大 (05:14)
14-5 冤家路窄——必然发生死锁的例子、看程序停止的信号 (11:37)
14-6 互不相让——银行转账发生死锁 (14:25)
14-7 星罗棋布——500 人同时随机转账,依然会发生死锁 (12:04)
14-8 缺一不可——分析死锁要发生的 4 个必要条件,逐一对比刚才的实例 (06:12)
14-9 精准打击——如何定位死锁?方法一:jstack (08:51)
14-10 防患未然——如何定位死锁?方法二:用 ThreadMXBean (05:01)
14-11 统筹安排——修复死锁的 3 个策略;用换序来避免转账死锁 (11:39)
14-12 思考人生——哲学家就餐问题描述 (04:49)
14-13 代码落地——哲学家就餐问题演示 (14:18)
14-14 打破僵局——解决哲学家的死锁的 4 种办法 (05:40)
14-15 剥夺权利——检测与恢复策略 (04:44)
14-16 海阔天空——实际工程中避免死锁的 8 个 tips——使用 tryLock (12:26)
14-17 一心一意——实际工程中避免死锁的 8 个 tips——part 2 (05:39)
14-18 徒劳无功——什么是活锁?(06:46)
14-19 你推我让——活锁演示:牛郎织女没饭吃 (12:24)
14-20 难以捉摸——解决活锁:引入随机性 (07:58)
14-21 命运不公——饥饿 (03:37)
14-22 面试问题——死锁常见面试问题总结 (07:33)
14-23 整章总结——死锁从产生到消除重点回顾 (15:58)
14-24 思维导图——死锁从产生到消除梳理,资料下载地址
第 15 章【最终回合】思维导图助你攻克并发
15-1 有的放矢——八大重点提炼 (14:33)
15-2 直击目标——Java 内存模型、死锁重点总结 (10:36)
15-3 知己知彼——面试高频考点汇总 (11:33)
15-4 百尺竿头——结语 (00:35)