口径
口径
CPU 密集型:线程数 ≈ 核数 + 1
IO 密集型:线程数 ≈ 核数 × (1 + 平均等待/平均计算)
队列选择:有界队列 + 拒绝策略(快速失败或降级)线程池配置示例(Java)
线程池配置示例(Java)
int cores = Runtime.getRuntime().availableProcessors();
// 等待/计算比约 9:1 的 IO 密集任务
int threads = cores * 10;
var pool = new ThreadPoolExecutor(threads, threads, 60, TimeUnit.SECONDS,
new ArrayBlockingQueue<>(2000), // 有界队列
new ThreadPoolExecutor.AbortPolicy()); // 拒绝策略:快速失败
// 监控:活跃线程、队列深度、拒绝与超时计数线程数与队列容量要和上游超时联动:排队时间超过上游超时,任务做完也无人等待。