1-1_并发编程入门到实战课程简介.mp41-2_什么是并发编程.mp4
1-3_并发编程的挑战之频繁的上下文切换.mp4
1-4_并发编程的挑战之死锁.mp4
1-5_并发编程的挑战之线程安全.mp4
1-6_并发编程的挑战之资源限制.mp4
2-1_进程与线程的区别.mp4
2-2_线程的状态及其相互转换.mp4
2-3_创建线程的方式(上).mp4
2-4_创建线程的方式(下).mp4
2-5_线程的挂起及其恢复.mp4
2-6_线程的中断操作.mp4
2-7_线程的优先级.mp4
2-8_守护线程.mp4
3-1_什么是线程安全性.mp4
3-2_从字节码角度剖析线程不安全操作.mp4
3-3_原子性操作.mp4
3-4_深入理解synchronized关键字.mp4
3-5_volatile关键字及其使用场景.mp4
3-6_单例与线程安全.mp4
3-7_如何避免线程安全性问题.mp4
4-1_锁的分类.mp4
4-2_深入理解lock接口.mp4
4-3_实现属于自己的锁.mp4
4-4_AbstractQueuedSynchronizer浅析.mp4
4-5_深入剖析ReentrantLock源码之非公平锁的实现.mp4
4-6_深入剖析ReentrantLock源码之公平锁的实现.mp4
4-7_掌控线程执行顺序之多线程Debug.mp4
4-8_读写锁特性及ReentrantReadWriteLock的使.mp4
4-9_源码探秘之AQS如何用单一int值表示读写两种状态.mp4
4-10_深入剖析ReentrantReadWriteLock之读锁源.mp4
4-11_深入剖析ReentrantReadWriteLock之写锁源.mp4
4-12_锁降级详解.mp4
4-13_StampedLock原理及使用.mp4
5-1_wait_notify_notifyAll.mp4
5-2_等待通知经典模型之生产者消费者.mp4
5-3_使用管道流进行通信.mp4
5-4_Thread.join通信及其源码浅析.mp4
5-5_ThreadLocal的使用.mp4
5-6_Condition的使用.mp4
6-1_什么是原子类.mp4
6-2_原子更新基本类型.mp4
6-3_原子更新数组类型.mp4
6-4_原子更新属性.mp4
6-5_原子更新引用类型.mp4
7-1_同步容器与并发容器.mp4
7-2_同步容器.mp4
7-3_并发容器.mp4
7-4_LinkedBlockingQueue的使用及其源码探秘.mp4
8-1_CountDownLatch的使用及其源码探秘.mp4
8-2_CyclicBarrier的使用及其源码探秘.mp4
8-3_Semaphore的使用及其源码探秘.mp4
8-4_Exchanger的使用.mp4
9-1_为什么要使用线程池.mp4
9-2_线程池的创建及其使用.mp4
9-3_Callable、Future、FutureTask简介.mp4
9-4_线程池的核心组成部分及其运行机制.mp4
9-5_线程池拒绝策略.mp4
9-6_使用Executor框架创建线程池的n种方法.mp4
9-7_线程池的使用建议.mp4
10-1_java内存模型.mp4
10-2_先行发生原则happens-before.mp4
10-3_指令重排序.mp4
11-1_需求分析.mp4
11-2_中间表设计.mp4
11-3_基础环境搭建.mp4
11-4_生产者编码实现.mp4
11-5_消费者编码实现.mp4
12-1_课程总结.mp4
配套资料 笔记.zip