并发编程

Java 并发知识地图

理解可见性、原子性、有序性,以及 Java 并发工具如何建立在这些规则之上。

难度:进阶更新:2026-07-10

并发问题的三个核心维度

可见性

一个线程修改的数据,何时能够被另一个线程观察到。volatile、锁和线程启动/终止规则都与 happens-before 有关。

原子性

一个操作能否被其他线程观察到中间状态。count++ 即使使用 volatile 也不是原子操作。

有序性

编译器和处理器可以在不改变单线程结果的前提下重排序。并发程序必须通过同步规则建立必要顺序。

知识路线

  1. Java 内存模型与 happens-before
  2. volatile 与内存屏障
  3. synchronized 与对象监视器
  4. CAS、原子类和 ABA 问题
  5. AQS、锁和同步器
  6. 线程池与任务调度
  7. CompletableFuture 与异步编排
  8. 并发容器

生产实践原则

  • 尽量减少共享可变状态。
  • 明确线程池的职责、队列容量和拒绝策略。
  • 不要把耗时不可控的任务提交到公共线程池。
  • 监控活跃线程数、队列长度、拒绝次数和任务耗时。
DISCUSSION

评论与讨论

留下你的想法