🗄️ 主内存: x=3 (过时) y=3
原子性 · 可见性 · 有序性 · 缓存一致性 · 内存屏障 · AQS · 锁机制 · 线程池
操作不可被中断。i++ 非原子,需 synchronized 或 Atomic 类保证。
三大特性之一线程修改变量后其他线程立即可见。volatile 强制刷主内存 + 缓存失效。
三大特性之一指令不被重排。happens-before 规则定义合法执行顺序。
三大特性之一MESI 协议保证多核缓存一致:M/E/S/I 四态转换。伪共享问题需 Padding。
硬件层4 种屏障禁止指令重排。volatile 写后插 StoreLoad,读后插 LoadLoad+LoadStore。
CPU 指令层CLH 队列 + state 同步状态。ReentrantLock/Semaphore/CountDownLatch 的基础。
框架层synchronized 锁升级(偏向→轻量→重量)、CAS/乐观锁、读写锁、可重入锁。
实现层7 大参数、4 种拒绝策略、5 种状态。核心→队列→最大→拒绝 提交流程。
工程层i++ 实际是 读→+1→写 三步,多线程下数据丢失
synchronized · Atomic*(CAS) · 数据库事务
volatile · synchronized · Lock
volatile 禁止重排 · happens-before 规则 · 内存屏障
| 特性 | synchronized | ReentrantLock | volatile | CAS / Atomic |
|---|---|---|---|---|
| 原子性 | ✅ 保证 | ✅ 保证 | ❌ 复合操作不保证 | ✅ 保证 |
| 可见性 | ✅ 保证 | ✅ 保证 | ✅ 保证 | ✅ 保证 |
| 有序性 | ✅ 保证 | ✅ 保证 | ✅ 保证 | ❌ 不保证 |
| 是否阻塞 | 阻塞 | 阻塞/可中断 | 不阻塞 | 不阻塞(自旋) |
| 适用场景 | 简单同步 | 复杂锁控制 | 标志位/状态 | 计数器/状态机 |
@Contended 注解 / @jdk.internal.vm.annotation.Contended!hasQueuedPredecessors(),有等待者则排队 → 公平但吞吐量低