# concurrent-tutorial **Repository Path**: natsukry/concurrent-tutorial ## Basic Information - **Project Name**: concurrent-tutorial - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-25 - **Last Updated**: 2026-05-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 🚀 Java 多线程与并发编程循序渐进教程 欢迎来到 Java 多线程与并发编程的世界! 本教程专为多线程初学者和进阶学习者设计,采用**“核心源码 + 详细注释 + 动手运行 + 思考问答”**的互动式编码学习方法。你不需要配置复杂的 Maven 或 Gradle,只要你的电脑上安装了 **JDK 11 或更高版本**,就可以直接通过单文件命令运行代码并观察结果。 --- ## 📅 课程学习路线 ### 阶段一:基础篇 - **[Lesson 01 - 线程的创建与运行](file:///d:/code/j/concurrent-tutorial/src/lesson01/)**:学习三种创建线程的方式以及 `start()` 与 `run()` 的底层原理。 - **[Lesson 02 - 线程的控制与生命周期](file:///d:/code/j/concurrent-tutorial/src/lesson02/)**:研究 `sleep`、`join`、`yield`、`interrupt` 和线程状态转移。 ### 阶段二:同步与线程安全篇 - **[Lesson 03 - 线程安全与 synchronized](file:///d:/code/j/concurrent-tutorial/src/lesson03/)**:探索数据竞争的根源与互斥锁的用法。 - **[Lesson 04 - 线程间协作与通信](file:///d:/code/j/concurrent-tutorial/src/lesson04/)**:学习经典生产者-消费者模型中 `wait` 与 `notify` 的使用规则。 - **[Lesson 05 - 显式锁 ReentrantLock](file:///d:/code/j/concurrent-tutorial/src/lesson05/)**:掌握更灵活的显式锁特性及多路精确唤醒。 ### 阶段三:并发工具与线程池篇 - **[Lesson 06 - 线程池原理与实战](file:///d:/code/j/concurrent-tutorial/src/lesson06/)**:手把手解析 `ThreadPoolExecutor` 七大参数与拒绝策略。 - **[Lesson 07 - 并发协同工具类](file:///d:/code/j/concurrent-tutorial/src/lesson07/)**:掌握 `CountDownLatch`、`CyclicBarrier` 与 `Semaphore` 的典型场景。 - **[Lesson 08 - 原子类与并发容器](file:///d:/code/j/concurrent-tutorial/src/lesson08/)**:分析 CAS 原理与高并发容器如 `ConcurrentHashMap`。 --- ## 🛠️ 环境准备与运行方式 ### 1. 检查 JDK 版本 请确保已安装 JDK 11+,在终端运行以下命令检查版本: ```bash java -version ``` ### 2. 运行单文件 Java 示例 在 JDK 11+ 中,你可以直接运行 `.java` 源码文件,而无需手动编译生成 `.class` 文件。例如,进入具体课程目录后: ```bash cd src/lesson01 java ThreadCreation.java ``` --- ## 💡 互动式学习方法 1. **先读 README.md**:了解本节课的理论重点、学习目标和运行建议。 2. **研究源码**:仔细阅读每个 `.java` 文件的代码与行内注释。 3. **动手运行**:执行 `java <文件名>.java` 并观察控制台输出。多运行几次,感受多线程的随机性和并发性。 4. **思考与实践**:每课末尾都有思考题或小实验,建议你在源码中尝试修改并观察变化,巩固记忆。