从线程池面试题延伸:线程数到底设多少,别再拍脑袋了
线程池的线程数怎么设,几乎是每个后端都被问过的问题。最常见的答案是拍脑袋:「设 200 吧,先跑跑看。」然后某天流量翻倍,线程数不够,请求排队超时;或者反向翻车,线程开太多,上下文切换把 CPU 烧光, throughput 不升反降。
线程池的线程数怎么设,几乎是每个后端都被问过的问题。最常见的答案是拍脑袋:「设 200 吧,先跑跑看。」然后某天流量翻倍,线程数不够,请求排队超时;或者反向翻车,线程开太多,上下文切换把 CPU 烧光, throughput 不升反降。
先说明属性:这是一篇经典题解析,题目出自本地历史面试资料(见文末来源说明),与任何公司的当前招聘无关。线程池是 Java 并发面试的高频题,但它的真正考点不是背七个参数的名字,而是能不能讲清楚一个新任务提交之后,线程池内部的决策顺序——这条流程线串起了所有参数的意义。