[05 看若兄弟,实如父子—Thread和Runnable详解](05%E7%9C%8B%E8%8B%A5%E5%85%84%E5%BC%9F%EF%BC%8C%E5%AE%9E%E5%A6%82%E7%88%B6%E5%AD%90%E2%80%94Thread%E5%92%8CRunnable%E8%AF%A6%E8%A7%A3.md)
[06 线程什么时候开始真正执行?—线程的状态详解](06%E7%BA%BF%E7%A8%8B%E4%BB%80%E4%B9%88%E6%97%B6%E5%80%99%E5%BC%80%E5%A7%8B%E7%9C%9F%E6%AD%A3%E6%89%A7%E8%A1%8C%EF%BC%9F%E2%80%94%E7%BA%BF%E7%A8%8B%E7%9A%84%E7%8A%B6%E6%80%81%E8%AF%A6%E8%A7%A3.md)
[07 深入Thread类—线程API精讲](07%E6%B7%B1%E5%85%A5Thread%E7%B1%BB%E2%80%94%E7%BA%BF%E7%A8%8BAPI%E7%B2%BE%E8%AE%B2.md)
[08 集体协作,什么最重要?沟通!—线程的等待和通知](08%E9%9B%86%E4%BD%93%E5%8D%8F%E4%BD%9C%EF%BC%8C%E4%BB%80%E4%B9%88%E6%9C%80%E9%87%8D%E8%A6%81%EF%BC%9F%E6%B2%9F%E9%80%9A%EF%BC%81%E2%80%94%E7%BA%BF%E7%A8%8B%E7%9A%84%E7%AD%89%E5%BE%85%E5%92%8C%E9%80%9A%E7%9F%A5.md)
[09 使用多线程实现分工、解耦、缓冲—生产者、消费者实战](09%E4%BD%BF%E7%94%A8%E5%A4%9A%E7%BA%BF%E7%A8%8B%E5%AE%9E%E7%8E%B0%E5%88%86%E5%B7%A5%E3%80%81%E8%A7%A3%E8%80%A6%E3%80%81%E7%BC%93%E5%86%B2%E2%80%94%E7%94%9F%E4%BA%A7%E8%80%85%E3%80%81%E6%B6%88%E8%B4%B9%E8%80%85%E5%AE%9E%E6%88%98.md)
- 前言
- 第1章 Java并发简介
- 01 开篇词:多线程为什么是你必需要掌握的知识
- 02 绝对不仅仅是为了面试—我们为什么需要学习多线程
- 03 多线程开发如此简单—Java中如何编写多线程程序
- 04 人多力量未必大—并发可能会遇到的问题
- 第2章 Java中如何编写多线程
- 05 看若兄弟,实如父子—Thread和Runnable详解
- 06 线程什么时候开始真正执行?—线程的状态详解
- 07 深入Thread类—线程API精讲
- 08 集体协作,什么最重要?沟通!—线程的等待和通知
- 09 使用多线程实现分工、解耦、缓冲—生产者、消费者实战
- 第3章 并发的问题和原因详解
- 10 有福同享,有难同当—原子性
- 11 眼见不实—可见性
- 12 什么?还有这种操作!—有序性
- 13 问题的根源—Java内存模型简介
- 14 僵持不下—死锁详解
- 第4章 如何解决并发问题
- 15 原子性轻量级实现—深入理解Atomic与CAS
- 16 让你眼见为实—volatile详解
- 17 资源有限,请排队等候—Synchronized使用、原理及缺陷
- 18 线程作用域内共享变量—深入解析ThreadLocal
- 第5章 线程池
- 19 自己动手丰衣足食—简单线程池实现
- 20 其实不用造轮子—Executor框架详解
- 第6章 主要并发工具类
- 21 更高级的锁—深入解析Lock
- 22 到底哪把锁更适合你?—synchronized与ReentrantLock对比
- 23 按需上锁—ReadWriteLock详解
- 24 经典并发容器,多线程面试必备—深入解析ConcurrentHashMap上
- 25 经典并发容器,多线程面试必备—深入解析ConcurrentHashMap下
- 26不让我进门,我就在门口一直等!—BlockingQueue和ArrayBlockingQueue
- 27 倒数计时开始,三、二、一—CountDownLatch详解
- 28 人齐了,一起行动—CyclicBarrier详解
- 29 一手交钱,一手交货—Exchanger详解
- 30 限量供应,不好意思您来晚了—Semaphore详解
- 第7章 高级并发工具类及并发设计模式
- 31 凭票取餐—Future模式详解
- 32 请按到场顺序发言—Completion Service详解
- 33 分阶段执行你的任务-学习使用Phaser运行多阶段任务
- 34 谁都不能偷懒-通过 CompletableFuture 组装你的异步计算单元
- 35拆分你的任务—学习使用Fork/Join框架
- 36 为多线程们安排一位经理—Master/Slave模式详解
- 第8章 总结
- 37 结束语