08 — 多线程与并发索引
定位: Java 并发编程 — 从线程基础到 JUC 工具类,多核时代的核心能力 面试高频度: ⭐⭐⭐⭐⭐
一、板块在体系中的位置
┌─────────────────────────────────────────────────────────────┐
│ 并发在 Java 体系中的位置 │
│ │
│ 07-Lambda/Stream (并行流底层 = 并发) │
│ │ │
│ ▼ │
│ 08-多线程与并发 ← 在这里 │
│ Thread · synchronized · Lock · AQS · 线程池 │
│ │ │
│ └──→ [[avazoe/JVM/08-Java内存模型与并发]] (JMM 底层) │
│ volatile · happens-before · 锁升级 │
└─────────────────────────────────────────────────────────────┘二、知识全景图
┌─────────────────────────────────────────────────────────────┐
│ Java 并发编程全景图 │
│ │
│ ┌─────────── 线程基础 ────────────────────────────┐ │
│ │ Thread / Runnable / Callable │ │
│ │ 线程状态: NEW → RUNNABLE → BLOCKED/WAITING → TERM │ │
│ └──────────────────────────────────────────────────┘ │
│ │
│ ┌─────────── 线程安全 ────────────────────────────┐ │
│ │ synchronized (JVM 层面) vs Lock (API 层面) │ │
│ │ AQS 队列同步器 → ReentrantLock / CountDownLatch │ │
│ │ volatile → 可见性,不保证原子性 │ │
│ └──────────────────────────────────────────────────┘ │
│ │
│ ┌─────────── 线程池 ──────────────────────────────┐ │
│ │ ThreadPoolExecutor 核心参数 │ │
│ │ 核心线程 → 工作队列 → 最大线程 → 拒绝策略 │ │
│ │ Executors 工厂方法的陷阱 │ │
│ └──────────────────────────────────────────────────┘ │
│ │
│ → JMM/volatile/synchronized 底层:[[avazoe/JVM/08-JMM索引]] │
└─────────────────────────────────────────────────────────────┘三、子专题导航
| # | 主题 | 面试频率 | 核心内容 |
|---|---|---|---|
| **线程基础与创建** | 线程基础与创建 | ⭐⭐⭐⭐ | 三种创建方式、线程状态迁移、daemon 线程 |
| **线程安全与锁** | 线程安全与锁 | ⭐⭐⭐⭐⭐ | synchronized/Lock、wait/notify、可见性、重入 |
| **并发工具类(AQS)** | AQS与并发工具 | ⭐⭐⭐⭐ | AQS 原理、CountDownLatch/CyclicBarrier/Semaphore |
| **Executor与线程池** | 线程池 | ⭐⭐⭐⭐⭐ | ThreadPoolExecutor 参数、拒绝策略、Executors 陷阱 |
📚 相关文件
- **JMM索引** — JMM、happens-before、volatile 语义
- **锁升级过程** — synchronized 的 JVM 实现
- **Java文库设计文档** — 返回总纲