主题
Java 并发 · 必学内容图
一、线程基础
进程 vs 线程、上下文切换成本
线程创建方式(Thread / Runnable / Callable+FutureTask)
6 种线程状态与流转(NEW/RUNNABLE/BLOCKED/WAITING/TIMED_WAITING/TERMINATED)
start() vs run()、线程中断机制(interrupt / isInterrupted / InterruptedException 处理)
守护线程、join()、sleep() vs wait() 区别
线程未捕获异常(UncaughtExceptionHandler)
二、JMM 内存模型
三大问题:原子性 / 可见性 / 有序性(可复现实验)
主内存 vs 工作内存抽象
happens-before 规则(程序顺序、监视器锁、volatile、线程启动/join、传递性)
内存屏障(LoadLoad/StoreStore/LoadStore/StoreLoad)
final 语义与安全发布(不可变对象、构造期逃逸)
三、synchronized 与锁升级
三种用法及锁对象(实例方法/静态方法/代码块)
对象头 Mark Word 与 monitor
锁升级:无锁 → 偏向锁 → 轻量级锁(自旋/自适应自旋)→ 重量级锁
偏向锁 JDK15 废弃
锁消除、锁粗化(逃逸分析)
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 虚拟线程