档案 X-1155 / 后端工程
Java 并发深度:JUC、CAS、原子类、锁与线程机制
工程笔记
发布 / DavidHLPL
Fuwari 15 篇 JUC/Java 原文是本知识库最系统的并发专题,覆盖 CAS、原子类、synchronized、Monitor、ReentrantLock、ThreadLocal、LockSupport、死锁与引用类型。本页以 CAS 为内核串联。
核心机制
- CAS:
CASDeepDive.md从Unsafe.compareAndSwap到cmpxchg三层展开,ABA 用AtomicStampedReference解决。 - 原子类:
JavaAtomicClasses.md区分AtomicInteger/Long/Reference与LongAdder(分段累加,见LongAdderVSAtomicLong.md)。 - 锁:
synchronized/Monitor.md讲对象头与监视器;ReentrantLock.md/Reentrancy.md讲可重入与 AQS;LockSupport.md讲park/unpark。 - 协作:
CompletableFutureAction/FutureTaskAction与ThreadLocal.md讲异步与线程绑定;JavaInterruptMechanism与死锁诊断讲中断与排查。 - 引用:JDK8/17 两篇讲强/软/弱/虚引用的回收语义。
适用条件
- 无锁小临界区、计数器用 CAS/原子类;复杂临界区用显式锁。
- 高竞争计数用
LongAdder,低竞争用AtomicLong。
不适用与风险
- CAS 自旋在高竞争下空转;ABA 需版本戳。
ThreadLocal需及时remove,避免池化线程泄漏。- 引用类型语义随 GC 实现(G1/ZGC)与 JDK 版本变化。
最小验证
- 双线程
compareAndSet单次成功验证。 LongAddervsAtomicLong压测对比。ThreadLocal在线程池中set/remove泄漏检查。
证据与不确定性
- 来源事实:
ingest-java-concurrency收录 15 篇原文,含 40KB CAS 深度文。 - 本页综合:把分散篇章收敛为 CAS—锁—协作三问。
- 未确认项:
Unsafe在 JDK17 后逐步受限,VarHandle替代未在原文核对。
相关页面
来源与关联文档
研究记录
- 原始文档: src/content/note/zh-cn/java-concurrency-deepdive.md
- 来源版本: f49953fb0d4bd52a39bf81167b0c4b7dd7d78a64
- 证据状态: 有效