一个基于 Spring Boot 的线程池学习项目,演示如何配置和使用自定义线程池。
- Spring Boot 3.2.0
- Java 17
- Maven
- Lombok
- 🎯 自定义线程池配置
- 🔄 异步任务执行
- 📊 多种线程池类型(通用、IO密集型)
- ⚙️ 可配置的线程池参数
- 📝 详细的执行日志
- 🧠 Java内存模型(JMM)演示
- 🔒 可见性、原子性、有序性测试
- 🔄 volatile、synchronized、原子类对比
- 🏤 生产者消费者模式(wait/notify、Lock、BlockingQueue)
- 📊 ConcurrentHashMap vs HashMap 并发安全性对比
- 🔧 同步工具类应用场景(CountDownLatch、CyclicBarrier、Semaphore)
- 🚀 CompletableFuture异步编程(组合、异常处理、超时)
- 💾 ThreadLocal使用与内存泄漏防范
- 🔐 锁升级过程演示(偏向锁→轻量级锁→重量级锁)
- 📊 自定义拒绝策略和线程池监控
mvn spring-boot:run应用启动后,可以通过以下API测试功能:
- 默认异步任务:
GET http://localhost:8081/thread-pool/test-default - 自定义线程池:
GET http://localhost:8081/thread-pool/test-custom - IO线程池:
GET http://localhost:8081/thread-pool/test-io - 多任务测试:
GET http://localhost:8081/thread-pool/test-multiple
- 普通变量可见性:
GET http://localhost:8081/jmm/normal-visibility - volatile可见性:
GET http://localhost:8081/jmm/volatile-visibility - synchronized保证:
GET http://localhost:8081/jmm/synchronized-visibility - 原子类保证:
GET http://localhost:8081/jmm/atomic-visibility - 指令重排序:
GET http://localhost:8081/jmm/reordering - 所有JMM演示:
GET http://localhost:8081/jmm/all
- wait/notify模式:
GET http://localhost:8081/producer-consumer/wait-notify - Lock/Condition模式:
GET http://localhost:8081/producer-consumer/lock-condition - ArrayBlockingQueue:
GET http://localhost:8081/producer-consumer/array-blocking-queue - LinkedBlockingQueue:
GET http://localhost:8081/producer-consumer/linked-blocking-queue - SynchronousQueue:
GET http://localhost:8081/producer-consumer/synchronous-queue - 多生产者消费者:
GET http://localhost:8081/producer-consumer/multiple - 所有模式演示:
GET http://localhost:8081/producer-consumer/all
- HashMap线程不安全:
GET http://localhost:8081/concurrent-map/hashmap-unsafe - ConcurrentHashMap安全:
GET http://localhost:8081/concurrent-map/concurrenthashmap-safe - 并发修改异常:
GET http://localhost:8081/concurrent-map/concurrent-modification-exception - 性能对比测试:
GET http://localhost:8081/concurrent-map/performance-comparison - 原子操作演示:
GET http://localhost:8081/concurrent-map/atomic-operations - 所有对比演示:
GET http://localhost:8081/concurrent-map/all
- CountDownLatch:
GET http://localhost:8081/sync-tools/countdown-latch - CyclicBarrier:
GET http://localhost:8081/sync-tools/cyclic-barrier - Semaphore连接池:
GET http://localhost:8081/sync-tools/semaphore-pool - Semaphore限流:
GET http://localhost:8081/sync-tools/semaphore-ratelimit - 组合使用:
GET http://localhost:8081/sync-tools/combined-usage - 所有工具演示:
GET http://localhost:8081/sync-tools/all
- 基础使用:
GET http://localhost:8081/completable-future/basic-usage - 链式操作:
GET http://localhost:8081/completable-future/chaining - 组合操作:
GET http://localhost:8081/completable-future/combining - 异常处理:
GET http://localhost:8081/completable-future/exception-handling - 超时处理:
GET http://localhost:8081/completable-future/timeout - 并行处理:
GET http://localhost:8081/completable-future/parallel-processing - 竞速模式:
GET http://localhost:8081/completable-future/any-of - 所有演示:
GET http://localhost:8081/completable-future/all
- 基础使用:
GET http://localhost:8081/thread-local/basic-usage - 线程池中使用:
GET http://localhost:8081/thread-local/thread-pool-usage - 内存泄漏演示:
GET http://localhost:8081/thread-local/memory-leak - 可继承版本:
GET http://localhost:8081/thread-local/inheritable - DateFormat安全:
GET http://localhost:8081/thread-local/dateformat-safety - 性能对比:
GET http://localhost:8081/thread-local/performance-comparison - 所有演示:
GET http://localhost:8081/thread-local/all
- 锁升级过程:
GET http://localhost:8081/advanced/lock-upgrade - 锁性能对比:
GET http://localhost:8081/advanced/lock-performance - 读写锁优势:
GET http://localhost:8081/advanced/read-write-lock - 可重入锁:
GET http://localhost:8081/advanced/reentrant-lock - 自定义拒绝策略:
GET http://localhost:8081/advanced/custom-rejection - 线程池监控:
GET http://localhost:8081/advanced/thread-pool-monitoring - 所有高级演示:
GET http://localhost:8081/advanced/all
src/main/java/com/example/threadlearning/
├── config/
│ └── ThreadPoolConfig.java # 线程池配置
├── controller/
│ ├── ThreadPoolController.java # 线程池REST API接口
│ ├── JmmController.java # JMM演示API接口
│ ├── ProducerConsumerController.java # 生产者消费者API接口
│ ├── ConcurrentMapController.java # 并发集合API接口
│ ├── SyncToolsController.java # 同步工具API接口
│ ├── CompletableFutureController.java # 异步编程API接口
│ ├── ThreadLocalController.java # ThreadLocalAPI接口
│ └── AdvancedConcurrencyController.java # 高级并发API接口
├── service/
│ └── AsyncService.java # 异步服务
├── jmm/
│ └── MemoryVisibilityDemo.java # JMM内存可见性演示
├── pattern/
│ ├── WaitNotifyProducerConsumer.java # wait/notify生产者消费者
│ └── BlockingQueueProducerConsumer.java # 阻塞队列生产者消费者
├── concurrent/
│ └── ConcurrentMapDemo.java # 并发集合对比演示
├── sync/
│ └── SynchronizationToolsDemo.java # 同步工具类演示
├── async/
│ └── CompletableFutureDemo.java # CompletableFuture演示
├── threadlocal/
│ └── ThreadLocalDemo.java # ThreadLocal演示
├── lock/
│ └── LockUpgradeDemo.java # 锁升级演示
├── monitor/
│ └── ThreadPoolMonitorDemo.java # 线程池监控演示
└── ThreadLearningApplication.java # 启动类
所有线程池参数均可在 application.properties 中配置:
thread.pool.custom.*- 自定义线程池配置thread.pool.io.*- IO线程池配置thread.pool.default.*- 默认线程池配置
应用运行时会输出详细的线程执行日志,可以观察不同线程池的工作情况。