|
|
## Spring Boot 线程池编号解析
### `http-nio-9999-exec-X` 含义
| 部分 | 含义 |
|------|------|
| `http` | HTTP 协议处理 |
| `nio` | NIO(非阻塞 I/O)模式 |
| `9999` | 监听端口号 |
| `exec` | 执行器(Executor) |
| `X` (1-10) | **线程编号** |
---
### 线程编号说明
```
http-nio-9999-exec-1 ← 第 1 个工作线程
http-nio-9999-exec-2 ← 第 2 个工作线程
http-nio-9999-exec-3 ← 第 3 个工作线程
...
http-nio-9999-exec-10 ← 第 10 个工作线程
```
这是 **Tomcat 线程池中的线程编号**,表示当前请求由哪个线程处理。
---
### 从日志看出的信息
```
exec-3 → PUT GateType:20003:Type
exec-7 → PUT GateType:20003:Upload
exec-6 → PUT GateType:20003 ownload
exec-8 → PUT GateType:20003:AllUpload
exec-9 → PUT GateType:20003:AllDownload
```
**说明:**
- 你的请求被 **多个线程并发处理**
- 线程池默认有 **10 个核心线程**(exec-1 到 exec-10)
- 每个请求被分配到不同的线程
---
### 线程池配置
```yaml
# application.yml
server:
port: 9999
tomcat:
threads:
max: 200 # 最大线程数
min-spare: 10 # 核心线程数(默认10)
accept-count: 100 # 等待队列长度
```
```java
// 查看当前线程池配置
@Value("${server.tomcat.threads.max:200}")
private int maxThreads;
@Value("${server.tomcat.threads.min-spare:10}")
private int minSpareThreads;
```
---
### 线程分配示意图
```
Tomcat 线程池
│
┌─────────────────────────┼─────────────────────────┐
│ │ │
exec-1 exec-2 exec-3 exec-4 exec-5 ... exec-10
│ │ │ │ │ │
▼ ▼ ▼ ▼ ▼ ▼
请求1 请求2 请求3 请求4 请求5 ... 请求N
```
---
### 总结
| 问题 | 答案 |
|------|------|
| 数字含义 | Tomcat 线程池中的线程编号 |
| 范围 | 1 到 max(默认最大 200) |
| 当前活跃 | 1-10(说明有 10 个并发请求) |
| 配置位置 | `server.tomcat.threads.*` |
|
|