直接回答:没有放之四海皆准的数值,经典估算按任务类型区分:CPU 密集型设为 核数 + 1;IO 密集型可明显放大,常用 Brian Goetz 的公式 N × CPU 利用率 × (1 + 等待时间/计算时间)

展开解析:CPU 密集型任务瓶颈在计算,线程数超过核数只会增加上下文切换;IO 密集型线程大量时间在等待网络/磁盘,更多线程能提高 CPU 利用率。例如 8 核机器上等待与计算比为 4:1 时,可估算为 8 × 1 × (1+4) = 40 左右。

落地方法比公式更重要:

  1. 先按公式给初值,再压测观察吞吐、响应时间与 CPU 利用率,逐步调整;
  2. 线程池加上监控指标(活跃线程数、队列积压、任务耗时),线上持续调优,可参考动态线程池方案(如 dynamic-tp);
  3. 不同业务隔离线程池,避免慢任务拖垮全局;
  4. 配套选择合适的队列与拒绝策略,防止任务无限堆积。

易错点:线程数不是越大越好——过多线程带来内存占用(每线程栈约 1MB)与切换开销;也要把下游承载力(数据库连接数、下游接口限流)纳入考虑,线程池放大到 200 而数据库只有 50 连接是无效的。