Java线程池核心线程数和最大线程数怎么设置?
总是在面试中被问到Java线程池核心线程数和最大线程数怎么设置?我说应该考虑实际的场景和需求,但是面试官又说请你结合你觉得的一些典型场景分析然后给出如何设计的思路?每次到这就有点不知道该怎么说,希望大家可以帮我解答的一下疑惑 谢谢!
回答:
可以从线程池里的任务是IO密集型
还是计算密集型
的角度来讨论一下
如果是IO密集型
的任务,说明对IO占用高,而对CPU的需求较少
,那么最大线程数可以多开一点,这样可以更充分地利用CPU资源,比如tomcat的默认线程数就是200
而如果是计算密集型
的任务,说明对CPU的需求较高
,那么最大线程数就不需要开太多(因为线程数开太多,但是CPU核心数就那么多,开太多反而会增加线程上下文切换的时间
),一般为 CPU核心数*2
就够了,如果实在要达到最优,可以通过不断测试来确定当线程数为多大时,效率最高
。
以上是 Java线程池核心线程数和最大线程数怎么设置? 的全部内容, 来源链接: utcz.com/p/944588.html