# JUC **Repository Path**: bfs1201/juc ## Basic Information - **Project Name**: JUC - **Description**: juc学习代码演示 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-09-05 - **Last Updated**: 2026-04-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Java 多线程编程学习项目 本项目是一套完整的 Java 多线程编程学习教程,涵盖了从基础到进阶的多个主题。通过丰富的代码示例,帮助开发者深入理解 Java 并发编程的核心概念和实践技巧。 ## 项目结构 ``` src/main/java/cn/itcast/ ├── n1/ # 线程基础 - 创建与启动 ├── n2/ # 异步编程基础 ├── n3/ # 线程控制与状态管理 ├── t4/ # 线程同步与安全 │ ├── deadLock/ # 死锁与活锁 │ ├── exercise/ # 练习题 │ ├── multiLock/ # 多锁解决方案 │ ├── park/ # Park/Unpark 机制 │ ├── pattern/ # 并发设计模式 │ │ ├── guardedSuspension/ # 守卫悬停模式 │ │ ├── messageQueue/ # 消息队列 │ │ └── sequence/ # 顺序控制 │ ├── reentrantLock/ # 可重入锁 │ ├── safe/ # 线程安全与不安全 │ ├── synchronized_test/ # synchronized 测试 │ └── wait/ # wait/notify 机制 ├── t5/ # volatile 与线程局部变量 │ └── volatile_test/ # volatile 关键字 ├── thread/local/ # ThreadLocal ├── util/ # 工具类 └── constant/ # 常量定义 ``` ## 核心主题 ### 1. 线程基础 (n1 包) - **Test1**: 线程的创建与基本使用 - **Test2**: Lambda 表达式创建线程 - **Test3**: 线程返回值与 Future ### 2. 线程状态与控制 (n3 包) - **TestStartAndRun**: start() 与 run() 的区别 - **TestSleepAndYield**: sleep() 与 yield() - **TestInterrupt**: 线程中断机制 - **TestJoin**: join() 方法使用 - **TestDaemon**: 守护线程 - **TestTwoPhaseTermination**: 两阶段终止模式 ### 3. 线程同步 (t4 包) - **synchronized**: 同步代码块与同步方法 - **ReentrantLock**: 可重入锁 - **Wait/Notify**: wait() 与 notify() - **Condition**: 条件变量 - **DeadLock**: 死锁问题与解决方案 ### 4. 并发设计模式 (t4/pattern 包) - **Guarded Suspension**: 守卫悬停模式 - **Message Queue**: 消息队列 - **Promise**: 异步编程模式 - **Parallel**: 并行处理 ### 5. volatile 关键字 (t5/volatile_test 包) - **CanStop**: volatile 实现停止线程 - **Balking**: 栅栏模式 - **TwoPhaseTermination**: 两阶段终止模式 ### 6. ThreadLocal - 线程局部变量 - 线程隔离的上下文 ## 技术栈 - **JDK**: Java 8+ - **构建工具**: Maven - **日志框架**: SLF4J + Logback ## 快速开始 ### 编译项目 ```bash mvn clean compile ``` ### 运行测试 ```bash mvn test ``` ### 运行单个示例 ```bash # 运行线程基础示例 mvn exec:java -Dexec.mainClass="cn.itcast.n1.Test1" # 运行同步示例 mvn exec:java -Dexec.mainClass="cn.itcast.t4.synchronized_test.TestSynchronized" ``` ## 主要示例说明 ### 两阶段终止模式 (TwoPhaseTermination) 优雅地停止线程服务,首先设置停止标志,然后等待线程自行完成当前工作后退出。 ### 生产者消费者模式 (MessageQueue) 使用 wait/notify 实现线程安全的阻塞队列,支持限时等待。 ### 哲学家就餐问题 (PhilosopherMeal) 经典的并发问题,展示死锁的产生以及使用锁顺序或资源分级来避免死锁。 ### 泡茶工序 (TestPAOCHA) 多线程协作案例,模拟烧水、清洗茶杯、拿茶叶等并行任务。 ## 依赖配置 项目主要依赖: ```xml