课程目录

开篇词 (1讲)

  1. 开篇词 _ 你为什么需要学习并发编程?

学习攻略 (1讲)

  1. 学习攻略 _ 如何才能学好并发编程?

第一部分:并发理论基础 (13讲)

  1. 01 _ 可见性、原子性和有序性问题:并发编程Bug的源头
  2. 02 _ Java内存模型:看Java如何解决可见性和有序性问题
  3. 03 _ 互斥锁(上):解决原子性问题
  4. 04 _ 互斥锁(下):如何用一把锁保护多个资源?
  5. 05 _ 一不小心就死锁了,怎么办?
  6. 06 _ 用“等待-通知”机制优化循环等待
  7. 07 _ 安全性、活跃性以及性能问题
  8. 08 _ 管程:并发编程的万能钥匙
  9. 09 _ Java线程(上):Java线程的生命周期
  10. 10 _ Java线程(中):创建多少线程才是合适的?
  11. 11 _ Java线程(下):为什么局部变量是线程安全的?
  12. 12 _ 如何用面向对象思想写好并发程序?
  13. 13 _ 理论基础模块热点问题答疑

用户故事 (2讲)

  1. 3 个用户来信 _ 打开一个新的并发世界
  2. 用户来信 _ 真好,面试考到这些并发编程,我都答对了!

第二部分:并发工具类 (14讲)

  1. 14 _ Lock和Condition(上):隐藏在并发包中的管程
  2. 15 _ Lock和Condition(下):Dubbo如何用管程实现异步转同步?
  3. 16 _ Semaphore:如何快速实现一个限流器?
  4. 17 _ ReadWriteLock:如何快速实现一个完备的缓存?
  5. 18 _ StampedLock:有没有比读写锁更快的锁?
  6. 19 _ CountDownLatch和CyclicBarrier:如何让多线程步调一致?
  7. 20 _ 并发容器:都有哪些“坑”需要我们填?
  8. 21 _ 原子类:无锁工具类的典范
  9. 22 _ Executor与线程池:如何创建正确的线程池?
  10. 23 _ Future:如何用多线程实现最优的“烧水泡茶”程序?
  11. 24 _ CompletableFuture:异步编程没那么难
  12. 25 _ CompletionService:如何批量执行异步任务?
  13. 26 _ Fork_Join:单机版的MapReduce
  14. 27 _ 并发工具类模块热点问题答疑

第三部分:并发设计模式 (10讲)

  1. 28 _ Immutability模式:如何利用不变性解决并发问题?
  2. 29 _ Copy-on-Write模式:不是延时策略的COW
  3. 30 _ 线程本地存储模式:没有共享,就没有伤害
  4. 31 _ Guarded Suspension模式:等待唤醒机制的规范实现
  5. 32 _ Balking模式:再谈线程安全的单例模式
  6. 33 _ Thread-Per-Message模式:最简单实用的分工方法
  7. 34 _ Worker Thread模式:如何避免重复创建线程?
  8. 35 _ 两阶段终止模式:如何优雅地终止线程?
  9. 36 _ 生产者-消费者模式:用流水线思想提高效率
  10. 37 _ 设计模式模块热点问题答疑

第四部分:案例分析 (4讲)

  1. 38 _ 案例分析(一):高性能限流器Guava RateLimiter
  2. 39 _ 案例分析(二):高性能网络应用框架Netty
  3. 40 _ 案例分析(三):高性能队列Disruptor
  4. 41 _ 案例分析(四):高性能数据库连接池HiKariCP

第五部分:其他并发模型 (4讲)

  1. 42 _ Actor模型:面向对象原生的并发模型
  2. 43 _ 软件事务内存:借鉴数据库的并发经验
  3. 44 _ 协程:更轻量级的线程
  4. 45 _ CSP模型:Golang的主力队员

结束语 (2讲)

  1. 结束语 _ 十年之后,初心依旧
  2. 结课测试 _ 这些Java并发编程实战的知识你都掌握了吗?