**高并发、微服务 、性能调优实战案例100讲，所有案例均源于个人工作实战，均配合代码落地**

加我微信：itsoku，所有案例均提供在线答疑。



# 第9节 实现一个线程池管理器



## 要解决什么问题？

平时我们在开发中，创建了不少线程池，这些线程池都处于游离状态，不方便管理和监控，我们是无法知道目前系统中有哪些线程池、以及每个线程池当前的一个状态，负载情况等，所以我们可以开发一个线程池管理器来解决这个问题。



## 线程池管理器

统管系统中所有线程池，负责所有线程池的创建、监控等操作。



## 代码

```java
com.itsoku.lesson009.common.ThreadPoolManager
```

主要2个方法

- newThreadPool：创建一个线程池
- threadPoolInfoList：获取线程池管理器中所有的线程池列表，包含每个线程池的各种指标（名称、核心线程数、最大线程数、当前活动线程数、队列容量、队列当前大小等信息），监控系统采集这些信息进行监控告警等处理。



## 案例

1. ThreadPoolConfiguration：使用线程池创建2个线程池，一个用户发送邮件，一个用户发送短信，在业务上，通常不同的业务使用不同的线程池，这也叫线程池隔离，互不影响，如果用同一个线程池，比如发邮件和发短信共用一个，那么邮件太多的时候，会导致短信发送延后，影响业务

2. EmailSendService：模拟使用线程池发送邮件

3. ThreadPoolManagerController 中暴露了一个接口用于获取线程池管理器中所有线程池列表，可用于监控

4. 启动应用Lesson009Application

5. 访问`http://localhost:8080/threadPoolManager/threadPoolInfoList`

   ```json
   [{
   	"name": "emailThreadPool",
   	"corePoolSize": 5,
   	"maxPoolSize": 10,
   	"activeCount": 5,
   	"queueCapacity": 1000,
   	"queueSize": 84
   }, {
   	"name": "smsThreadPool",
   	"corePoolSize": 16,
   	"maxPoolSize": 32,
   	"activeCount": 0,
   	"queueCapacity": 1000,
   	"queueSize": 0
   }]
   ```



## 源码

在高并发系列实战案例的 lesson009 模块中，如果找不到的，留言获取，感谢大家。



# 高并发 & 微服务 & 性能调优实战案例100讲

## 已更新 9 节课

```java
1. 分片上传实战
2. 通用并发处理工具类实战
3. 实现一个好用接口性能压测工具类
4. 超卖问题的4种解决方案，也是防止并发修改数据出错的通用方案
5. Semaphore实现接口限流实战
6. 并行查询，优化接口响应速度实战
7. 使用TransactionTemplate优化接口性能（大事务优化）
8. 通用的动态Excel导出功能实战（很实用）
9. 手写线程池管理器，管理&监控所有线程池
```



## 课程部分大纲，连载中。。。。

以下课程均来源于个人多年的实战，均提供原理讲解 && 源码落地

<span style="font-weight:bold; color:red">目前整个课程59块钱，一杯咖啡的价格，还没下手的朋友，赶紧了，这几天就要涨价了</span>。

```java
1. 分片上传实战
2. 通用并发处理工具类实战
3. 实现一个好用接口性能压测工具类
4.超卖问题的4种解决方案，也是防止并发修改数据出错的通用方案
5. Semaphore实现接口限流实战
6. 并行查询，优化接口响应速度实战
7. 使用TransactionTemplate优化接口性能（大事务优化）
8. 手写线程池管理器，管理&监控所有线程池
9. 使用SpringBoot实现动态Job管理功能
10. 通用的Excel导出功能实战
11. 通用的幂等性工具类实战
12. 接口返回值通用设计
13. 接口太多，各种dto、vo不计其数，如何命名？
14. 一个业务太复杂了，方法太多，如何传参？
15. 如何统计接口耗时？
16. AOP实战接口日志打印功能
17. AOP实现业务操作日志记录功能
18. AOP实现MyBatis分页功能
19. SpringBoot读写分离实战
20. MQ专题：事务消息实战（防止消息丢失）
21. MQ专题：消息幂等消费通用方案实战
22. MQ专题：延迟消息通用方案实战
23. MQ专题：顺序消息通用方案实战
24. 分布式事务：使用事务消息实现事务最终一致性
25. 分布式事务：通用的TCC分布式事务生产级代码落地实战
26. 分布式锁案例实战
27. 微服务中如何传递上下文？实战
28. 微服务链路日志追踪实战（原理&代码落地）
29. SpringBoot实现租户数据隔离
30. MyBatis进阶：封装MyBatis，实现通用的无SQL版CRUD功能，架构师必备
31. MyBatis进阶：自己实现通用分表功能，架构师必备
32. MyBatis进阶：实现多租户隔离ORM框架
33. SpringBoot中实现自动监听PO的变化，自动生成表结构
34. 分布式专题：其他实战课程等
35. 性能调优：如何排查死锁？
36. 性能调优：如何排查内存溢出？
37. 性能调优：CPU被打满，如何排查？
38. 性能调优：生产代码没生效，如何定位？
39. 性能调优：接口太慢，如何定位？
40. 性能调优：如何查看生产上接口的入参和返回值？
41. 性能调优：远程debug
42. 生产上出现了各种故障，如何定位？
43. 其他等各种实战案例。。。
。。。
```

