Java(编程语言)并发与锁体系:知识图谱与复习路线
本入口为 Java(编程语言)并发与锁体系建立迁移边界、学习顺序和验收口径。模块总入口已完成导航化,01 至 07 子文档承担正式正文。
当前状态与题目基线
| 项目 | 当前值 | 说明 |
|---|---|---|
| 模块状态 | 已完成 | 01 至 07 教材子文档、综合题库和模块总入口均已完成并通过局部审计。 |
| 迁移计数口径 | 回答思路 | 以每个“回答思路”作为一组题目的唯一计数依据。 |
| 旧主文档题目基线 | 87 组 | 后续迁移后必须逐组可追溯。 |
| 旧题目状态 | 已迁移 | 子文档已补齐详细答案、进阶回答、数据演绎和项目失败路径。 |
| 主文档处理 | 已导航化 | 只保留知识地图、学习顺序、版本基线、图表和题库入口。 |
学习顺序与深度等级
| 顺序 | 学习主题 | 目标深度 | 通过标准 |
|---|---|---|---|
| 1 | 线程生命周期与 JMM(Java 内存模型) | L1(概念识别)→ L4(内存语义与发布) | 能用状态流转、可见性和先行发生规则解释并发问题。 |
| 2 | volatile(可见性关键字)、内存屏障与原子性 | L2(机制理解)→ L4(指令重排与数据演绎) | 能区分可见性、有序性和复合操作原子性。 |
| 3 | synchronized(同步锁)与 HotSpot(热点虚拟机)锁实现 | L2(机制理解)→ L4(对象头与排障) | 能解释锁竞争、可重入、监视器队列和死锁证据。 |
| 4 | CAS(比较并交换)、AQS(抽象队列同步器)与 Lock(锁接口) | L2(机制理解)→ L4(源码与图解) | 能演绎入队、挂起、唤醒和公平性权衡。 |
| 5 | ThreadLocal(线程本地变量)与并发容器 | L2(机制理解)→ L4(泄漏与隔离边界) | 能说明线程池复用、确定性清理和容器选型。 |
| 6 | 线程池与异步编排 | L2(机制理解)→ L4(容量、背压与恢复) | 能计算容量、解释拒绝策略并设计隔离。 |
| 7 | 线上排障、项目话术与综合题库 | L3(原理与边界)→ L4(项目话术与排障) | 能将库存防超卖、异步任务和 Runner(执行器)调度完整复述。 |
JDK(Java 开发工具包)版本基线
| 版本 | 使用方式 | 迁移要求 |
|---|---|---|
| JDK(Java 开发工具包)8 | 并发语义和锁实现的主讲解基线。 | 保留 JMM(Java 内存模型)、CAS(比较并交换)、AQS(抽象队列同步器)和线程池关键路径。 |
| JDK(Java 开发工具包)17 | 长期支持版本对照基线。 | 不把偏向锁视为默认可用能力;锁实现差异必须在对应章节说明。 |
| JDK(Java 开发工具包)21 | 当前长期支持版本对照基线。 | 将虚拟线程与传统线程池的适用边界单列,避免把线程池结论泛化到所有并发模型。 |
计划路径与交付状态
以下教材和图形产物均已创建。
| 计划路径 | 目标深度 | 当前状态 | 主要交付 | | --- | --- | --- | | 01-线程生命周期与 Java(编程语言)内存模型 | L4(内存语义与发布) | 已完成 | 线程状态、JMM(Java 内存模型)、安全发布和重排序。 | | 02-volatile内存屏障与原子性 | L4(指令重排与数据演绎) | 已完成 | volatile(可见性关键字)、屏障和丢失更新。 | | 03-synchronized(同步锁)与 HotSpot(热点虚拟机)锁实现 | L4(对象头与排障) | 已完成 | synchronized(同步锁)、监视器、锁竞争和死锁。 | | 04-CAS(比较并交换)、AQS(抽象队列同步器)与 Lock(锁接口)体系 | L4(源码与图解) | 已完成 | CAS(比较并交换)、AQS(抽象队列同步器)和锁工具。 | | 05-ThreadLocal(线程本地变量)与并发容器 | L4(泄漏与隔离边界) | 已完成 | ThreadLocal(线程本地变量)、并发容器和上下文清理。 | | 06-线程池与异步编排 | L4(容量、背压与恢复) | 已完成 | 线程池、异步编排、超时和重试风暴。 | | 07-线上排障项目话术与综合题库 | L4(项目话术与排障) | 已完成 | 线程池耗尽、死锁、库存防超卖和综合口述题。 | | assets/aqs-queue.puml | 图形源文件 | 已完成 | AQS(抽象队列同步器)同步队列和条件队列。 | | assets/aqs-queue.png | 图形渲染结果 | 已完成 | 经 PlantUML(开源建模工具)渲染的图形产物。 |
旧章节唯一迁移映射
迁移时每个旧章节只归属一个目标文件;其他章节只能链接引用,不能复制成多份正文。题目迁移仍以 87 组“回答思路”基线核对。
| 旧主文档章节 | 唯一目标文件 | 迁移内容 |
|---|---|---|
1. 简历关联点、2. 面试主线、5.1 并发工具选择图、12. 本模块复习清单 | 00-知识图谱与复习路线.md | 项目关联、学习顺序、工具选择总览和复习回归检查。 |
3.1 线程状态、3.2 三大并发问题、3.3 JMM(Java 内存模型) | 01-线程生命周期与Java内存模型.md | 状态、可见性、原子性、有序性和安全发布。 |
4.1 volatile(可见性关键字)、7.1 count++ 丢失更新、11.2 内存屏障和 volatile(可见性关键字) | 02-volatile内存屏障与原子性.md | 内存屏障、重排序和原子性边界。 |
4.2 synchronized(同步锁)、6.2 sleep(睡眠)与 wait(等待) | 03-synchronized与HotSpot锁实现.md | 监视器、等待唤醒、锁竞争和对象头。 |
4.3 CAS(比较并交换)、4.4 AQS(抽象队列同步器)、5.2 AQS(抽象队列同步器)排队模型、6.1 synchronized(同步锁)与 ReentrantLock(可重入锁)、11.3 LongAdder(高并发累加器)和 AtomicLong(原子长整型) | 04-CAS-AQS与Lock体系.md | 原子更新、同步队列、锁接口和高竞争计数。 |
11.1 ThreadLocal(线程本地变量)在线程池里的泄漏过程 | 05-ThreadLocal与并发容器.md | 引用链、线程复用、清理和容器选型。 |
4.5 线程池、7.2 线程池任务堆积演绎、11.4 CompletableFuture(异步编排)和线程池隔离、11.5 线程池拒绝与重试风暴 | 06-线程池与异步编排.md | 执行流程、容量、隔离、超时和背压。 |
8.1 线程池耗尽排查、8.2 死锁排查、9.1 库存防超卖话术、9.2 异步任务线程池话术、9.3 synchronized(同步锁)底层话术、10. 高频面试题与追问 | 07-线上排障项目话术与综合题库.md | 排障证据、项目表达和综合口述题。 |
必画图与完成判定
| 图形 | 所属目标文件 | 产物要求 | 当前状态 |
|---|---|---|---|
| 线程状态与 JMM(Java 内存模型)交互 | 01-线程生命周期与Java内存模型.md | Mermaid(图表语法)状态图、内存交互图和安全发布演绎。 | 7/7 已渲染通过 |
| volatile(可见性关键字)屏障与重排序边界 | 02-volatile内存屏障与原子性.md | Mermaid(图表语法)顺序图和 count++ 数据演绎。 | 7/7 已渲染通过 |
| synchronized(同步锁)竞争与监视器队列 | 03-synchronized与HotSpot锁实现.md | Mermaid(图表语法)时序图和锁竞争路径。 | 10/10 已渲染通过 |
| AQS(抽象队列同步器)同步队列、挂起与唤醒 | 04-CAS-AQS与Lock体系.md | assets/aqs-queue.puml 使用 !pragma layout smetana,并渲染为 PNG(便携式网络图形)。 | 10/10 Mermaid(图表语法)图与 1/1 PlantUML(开源建模工具)图已渲染通过 |
| ThreadLocal(线程本地变量)引用链 | 05-ThreadLocal与并发容器.md | Mermaid(图表语法)图和线程池泄漏数据演绎。 | 7/7 已渲染通过 |
| 线程池拒绝、背压和恢复 | 06-线程池与异步编排.md | Mermaid(图表语法)决策树和容量计算。 | 11/11 已渲染通过 |
| 死锁、线程池耗尽与项目排障 | 07-线上排障项目话术与综合题库.md | 线上证据链和项目故障恢复路径。 | 9/9 已渲染通过 |
模块只有在下列条件全部满足时才可标记为“已完成”:87 组基线均有唯一去向并补齐详细答案与进阶回答;各知识章节具备完整题目字段;所有计划图形可渲染;术语、链接、围栏和占位句审计通过;并且库存、异步任务和 Runner(执行器)案例可直接用于面试复述。
