1. JVM 线程模型基础
- 了解 JVM 如何与操作系统线程映射(如一对一模型)。
- 学习 JVM 运行时数据区中与线程相关的部分(如 Java 虚拟机栈、本地方法栈、程序计数器)。
- 推荐资料:《深入理解Java虚拟机》第三版 第2、3章。
2. Java 线程的创建与生命周期
- 掌握 Thread 类、Runnable 接口、Callable/Future 的用法。
- 理解线程的生命周期(新建、就绪、运行、阻塞、死亡)。
- 实践:写简单的多线程程序。
3. JVM 对多线程的支持与调度
- 学习 JVM 如何调度线程(如优先级、上下文切换)。
- 了解 synchronized、wait/notify 的 JVM 字节码实现(如 monitorenter/monitorexit)。
- 推荐资料:JVM 规范、javap 工具反编译 synchronized 代码。
4. Java 内存模型(JMM)与可见性
- 理解主内存与工作内存、happens-before 规则。
- 学习 volatile、final、synchronized 的底层原理。
- 推荐资料:《Java并发编程的艺术》第3章。
5. 锁的实现与优化
- 了解 JVM 对 synchronized 的实现(偏向锁、轻量级锁、重量级锁)。
- 学习 Lock、ReentrantLock 等并发包的原理和用法。
- 推荐资料:《深入理解Java虚拟机》第13章。
6. 并发工具类与线程池
- 掌握 Executor 框架、线程池原理与调优。
- 学习 CountDownLatch、CyclicBarrier、Semaphore、FutureTask 等工具类。
- 实践:用线程池优化实际业务代码。
7. 并发问题与调试
- 理解死锁、活锁、饥饿、线程安全等问题。
- 学习如何用 jstack、jconsole、VisualVM 等工具分析多线程问题。
8. 高阶主题
- CAS、原子类(AtomicInteger 等)与 Unsafe。
- AQS(AbstractQueuedSynchronizer)原理。
- Fork/Join 框架、并行流。
9. 实践与源码阅读
- 阅读 JDK 并发包源码(如 java.util.concurrent)。
- 实践多线程编程,解决实际问题。
10. 推荐学习资料
- 《深入理解Java虚拟机》
- 《Java并发编程的艺术》
- 《Java并发编程实战》
- 官方文档与 JDK 源码
建议:
理论结合实践,边学边写代码、调试和分析,遇到问题多用 JVM 工具辅助理解底层原理。