Skip to content

Java 并发 · 必学内容图

一、线程基础

线程创建方式(Thread / Runnable / Callable+FutureTask)
6 种线程状态与流转(NEW/RUNNABLE/BLOCKED/WAITING/TIMED_WAITING/TERMINATED)
start() vs run()、线程中断机制(interrupt / isInterrupted / InterruptedException 处理)
守护线程、join()、sleep() vs wait() 区别

二、JMM 内存模型

三大问题:原子性 / 可见性 / 有序性(可复现实验)
主内存 vs 工作内存抽象
happens-before 规则(程序顺序、监视器锁、volatile、线程启动/join、传递性)
内存屏障(LoadLoad/StoreStore/LoadStore/StoreLoad)
final 语义与安全发布(不可变对象、构造期逃逸)

三、synchronized 与锁升级

三种用法及锁对象(实例方法/静态方法/代码块)
对象头 Mark Word 与 monitor
锁升级:无锁 → 偏向锁 → 轻量级锁(自旋/自适应自旋)→ 重量级锁
锁消除、锁粗化(逃逸分析)
synchronized vs ReentrantLock 选型

四、volatile / CAS / 原子类

volatile 可见性 + 禁止重排,不保证原子性
DCL 单例为什么需要 volatile
CAS 原理(Unsafe/VarHandle)、自旋开销
ABA 问题与 AtomicStampedReference
原子类家族(AtomicInteger/AtomicReference/AtomicReferenceFieldUpdater)
LongAdder / LongAccumulator 热点分离

五、AQS 与锁

AQS:state + CLH 变体队列 + 独占/共享模式
acquire/release 流程、ReentrantLock 公平 vs 非公平
ReentrantReadWriteLock 读写锁(state 位拆分、锁降级、不可升级)
StampedLock 乐观读
LockSupport park/unpark(许可机制、为什么不会丢信号)
手写基于 AQS 的同步器

六、同步工具与等待通知

wait/notify/notifyAll、虚假唤醒、为什么要 while 循环判断
Condition 管程、多路等待队列
CountDownLatch / CyclicBarrier / Semaphore 区别
Phaser、Exchanger

七、ThreadLocal

ThreadLocalMap 结构、哈希冲突线性探测
弱引用 key 与内存泄漏(value 泄漏链路)
为什么必须 remove()、线程池场景脏数据
InheritableThreadLocal 局限、阿里 TTL(TransmittableThreadLocal)
Scoped Values(预览)

八、并发容器

fail-fast vs fail-safe;Hashtable/Vector 为何淘汰
ConcurrentHashMap 1.7 分段锁 → 1.8 CAS+synchronized 桶锁
CopyOnWriteArrayList 写时复制
BlockingQueue 家族(Array/Linked/Synchronous/Delay/Priority)
ConcurrentLinkedQueue(无锁)vs LinkedBlockingQueue
阻塞队列在生产者消费者/线程池中的角色

九、线程池

7 大核心参数与执行流程(核心→队列→非核心→拒绝)
ctl 状态机(RUNNING/SHUTDOWN/STOP/TIDYING/TERMINATED)
为什么禁止 Executors 工厂方法(无界队列 OOM)
线程数定量(CPU 密集 / IO 密集 / Little's Law / 压测)
四种拒绝策略与自定义拒绝
动态调参、监控打点(Micrometer)
线程池生命周期管理(shutdown/awaitTermination/异常处理)
submit() 吞异常问题、ForkJoinPool commonPool 坑
ForkJoinPool 工作窃取

十、异步编排 / CompletableFuture / 虚拟线程

Future.get() 的局限、FutureTask
CompletableFuture 编排(thenApply/thenCombine/allOf/异常链)
默认 ForkJoinPool.commonPool 陷阱与传线程池
超时与降级(orTimeout / completeOnTimeout / exceptionally)
虚拟线程(Loom)M:N 模型、适用场景、Pinning 钉住
结构化并发(StructuredConcurrency)
选型:平台线程池 vs CF vs 虚拟线程

十一、无锁与高性能

伪共享 False Sharing 与缓存行填充(@Contended)
Disruptor RingBuffer 无锁队列
无锁数据结构思想

十二、排查实战与并发设计

死锁四条件、jstack 排查(top -Hp → printf %x)
arthas(thread -n / -b / dashboard)
线程泄漏、锁竞争热点、CPU 高/RT 高定位
死锁避免(锁顺序、tryLock 超时)
并发方案设计题(如千线程写同一文件:分片/队列/单线程化)
并发设计方法论:如何识别线程安全问题、锁粒度取舍、无锁化思路

手撕 → 框架 → 生产化,一步步把 AI Agent 工程化搞透。
粤ICP备2026104257号-1