# SUMMARY * [简介](./README.md) * [开篇词 | 你为什么需要学习并发编程?](./docs/83087.md) * [学习攻略 | 如何才能学好并发编程?](./docs/83267.md) * [01 | 可见性、原子性和有序性问题:并发编程Bug的源头](./docs/83682.md) * [02 | Java内存模型:看Java如何解决可见性和有序性问题](./docs/84017.md) * [03 | 互斥锁(上):解决原子性问题](./docs/84344.md) * [04 | 互斥锁(下):如何用一把锁保护多个资源?](./docs/84601.md) * [05 | 一不小心就死锁了,怎么办?](./docs/85001.md) * [06 | 用“等待-通知”机制优化循环等待](./docs/85241.md) * [07 | 安全性、活跃性以及性能问题](./docs/85702.md) * [08 | 管程:并发编程的万能钥匙](./docs/86089.md) * [09 | Java线程(上):Java线程的生命周期](./docs/86366.md) * [10 | Java线程(中):创建多少线程才是合适的?](./docs/86666.md) * [11 | Java线程(下):为什么局部变量是线程安全的?](./docs/86695.md) * [12 | 如何用面向对象思想写好并发程序?](./docs/87365.md) * [13 | 理论基础模块热点问题答疑](./docs/87749.md) * [14 | Lock和Condition(上):隐藏在并发包中的管程](./docs/87779.md) * [15 | Lock和Condition(下):Dubbo如何用管程实现异步转同步?](./docs/88487.md) * [16 | Semaphore:如何快速实现一个限流器?](./docs/88499.md) * [17 | ReadWriteLock:如何快速实现一个完备的缓存?](./docs/88909.md) * [18 | StampedLock:有没有比读写锁更快的锁?](./docs/89456.md) * [19 | CountDownLatch和CyclicBarrier:如何让多线程步调一致?](./docs/89461.md) * [20 | 并发容器:都有哪些“坑”需要我们填?](./docs/90201.md) * [21 | 原子类:无锁工具类的典范](./docs/90515.md) * [22 | Executor与线程池:如何创建正确的线程池?](./docs/90771.md) * [23 | Future:如何用多线程实现最优的“烧水泡茶”程序?](./docs/91292.md) * [24 | CompletableFuture:异步编程没那么难](./docs/91569.md) * [25 | CompletionService:如何批量执行异步任务?](./docs/92245.md) * [26 | Fork/Join:单机版的MapReduce](./docs/92524.md) * [27 | 并发工具类模块热点问题答疑](./docs/92849.md) * [28 | Immutability模式:如何利用不变性解决并发问题?](./docs/92856.md) * [29 | Copy-on-Write模式:不是延时策略的COW](./docs/93154.md) * [30 | 线程本地存储模式:没有共享,就没有伤害](./docs/93745.md) * [31 | Guarded Suspension模式:等待唤醒机制的规范实现](./docs/94097.md) * [32 | Balking模式:再谈线程安全的单例模式](./docs/94604.md) * [33 | Thread-Per-Message模式:最简单实用的分工方法](./docs/95098.md) * [34 | Worker Thread模式:如何避免重复创建线程?](./docs/95525.md) * [35 | 两阶段终止模式:如何优雅地终止线程?](./docs/95847.md) * [36 | 生产者-消费者模式:用流水线思想提高效率](./docs/96168.md) * [37 | 设计模式模块热点问题答疑](./docs/96736.md) * [38 | 案例分析(一):高性能限流器Guava RateLimiter](./docs/97231.md) * [39 | 案例分析(二):高性能网络应用框架Netty](./docs/97622.md) * [40 | 案例分析(三):高性能队列Disruptor](./docs/98134.md) * [41 | 案例分析(四):高性能数据库连接池HiKariCP](./docs/98491.md) * [42 | Actor模型:面向对象原生的并发模型](./docs/98903.md) * [43 | 软件事务内存:借鉴数据库的并发经验](./docs/99251.md) * [44 | 协程:更轻量级的线程](./docs/99787.md) * [45 | CSP模型:Golang的主力队员](./docs/100098.md) * [结束语 | 十年之后,初心依旧](./docs/100627.md) * [结课测试 | 这些Java并发编程实战的知识你都掌握了吗?](./docs/243424.md) * [用户来信 | 真好,面试考到这些并发编程,我都答对了!](./docs/102300.md) * [3 个用户来信 | 打开一个新的并发世界](./docs/105074.md)