fundamentals
fundamentals/concurrency-internals/index.md
medium
fundamentals-concurrency-internals-index
Java 并发内功四件事(原理服务于选型)— 锁升级指导 synchronized/Lock 选型、volatile 适用边界、CAS 与 LongAdder 计数选型、用 happens-before 判线程安全。Use when 选并发原语 / 判断线程安全 / 评审同步代码时。
子项索引
| 子项 | 一句话 |
|---|---|
| concurrency-synchronized-vs-lock skill | 用锁升级原理指导 synchronized vs ReentrantLock 选型 — 简单同步靠 JVM 优化选 synchronized,要 tryLock/公平/可中断/多条件才上 Lock |
| concurrency-volatile-boundary skill | volatile 适用边界 — 它只保证可见性 + 禁重排,不保证复合操作原子性;适合状态标志位,i++/check-then-act 这类非原子操作必须改用原子类或锁 |
| concurrency-cas-and-longadder skill | CAS 原理与原子类选型 — 低/中并发计数用 AtomicLong,高并发热点计数用 LongAdder(分段累加减少 CAS 失败重试);并理解 CAS 的 ABA 问题与解法 |
| concurrency-happens-before skill | 用 happens-before 规则判断"这段并发代码线程安全吗" — 把 JMM 的可见性保证落成可逐条检查的判据(写是否对读可见) |
Concurrency Internals · 子项索引
并发内功拆成四个独立决策点,原理用来指导"该用哪个",不背八股。按你正在做的事下钻:
| 你在做什么 | 进哪个 |
|---|---|
| 纠结同步用 synchronized 还是 ReentrantLock(凭锁升级原理选) | synchronized-vs-lock |
| 某变量想加 volatile,不确定够不够(如 i++ 行不行) | volatile-boundary |
| 写并发计数器,选 AtomicLong 还是 LongAdder / 遇到 ABA | cas-and-longadder |
| 判断"这段并发代码到底线程安全吗",找可见性依据 | happens-before |
这里讲原理→选型。线程池/异步编排等用法在
../../lang/java/concurrency/index.md。