574 字
3 分钟
Java 并发面试导读:线程、内存模型、锁与线程池

先把线程执行和共享数据规则讲清楚,再学锁、线程池与常用工具。达到能解释机制、选择工具、识别一个典型错误的程度即可,不要求背 AQS 或线程池的完整源码。

知识地图#

线程创建/等待/中断
→ JMM:原子性/可见性/有序性
→ 同步:volatile/synchronized → Lock/CAS/AQS
→ 执行资源:线程池 → 异步结果
→ 状态管理:ThreadLocal/并发容器/同步器

阅读路线与目录#

导读排在系列最前面,下面的顺序与专题导航一致。每篇先读问题和解释,再尝试不看答案口述“是什么、怎么工作、有什么边界”,不需要逐句背原文。

专题掌握标准
线程与协作区分 start/run、sleep/wait/join,正确处理中断。
JMM 与 volatile解释 happens-before、复合更新与常见单例的安全发布。
锁的对比理解 Monitor、同步块/方法的实现、可重入、超时与释放责任。
CAS 与 AQS说清 ABA、state、队列和独占/共享,不逐行背实现。
线程池推演 core → 队列 → max → 拒绝,区分常见工厂的积压与线程增长风险。
ThreadLocal解释每线程绑定、泄漏、串用与 finally 清理。
ConcurrentHashMap区分并发协调、原子 API 和弱一致遍历。
JUC 工具与异步结果按场景选择同步器、队列和 Future。

第一轮准备到哪里?#

线程、JMM、两种锁、线程池和 ThreadLocal 优先;CAS/AQS 先掌握概念,其他工具按常用场景复习。暂不展开 AQS 节点字段、锁状态位和偏向锁的版本历史,也不要求所有 JUC 类型都成独立文章。

自查问题#

  • volatile 为什么不能保证 count++ 安全?
  • 线程池队列未满时会先创建非核心线程吗?
  • 为什么 ThreadLocal 要在线程池任务结束时清理?
  • 超时和取消是否意味着异步任务已经停止?

回答这些问题时,先给结论,再说明机制,最后用文章中的例子或边界验证。答不清时回到对应专题,不另外堆一套重复题库。

相关系列#

遇到死锁等概念可读 死锁条件,理解运行时内存接 JVM 导读。

Java 并发面试导读:线程、内存模型、锁与线程池
https://blog.xqcherry.top/posts/interview/java/java-concurrency-interview-roadmap/
作者
xqcherry
发布于
2026-10-12
许可协议
CC BY-NC-SA 4.0