文章目录
写在文章开头
大部分读者可能都会看过网上的几篇文章,对于线程数的设定基本都是采用下面这个公式:
计算密集型=CPU核心数+1
IO密集型=CPU核心数*2+1
然而事实真的是这样吗?那么为什么tomcat
服务器的核心线程数要设置为200
呢?基于此问题,笔者也基于个人的经验和实践给出自己的一套方法论,希望对你有帮助。
线程池调测实践
单计算任务是否可以跑满单个CPU
针对上述的公式,作者认为计算密集型的任务基本都在进行CPU运算
,没有所谓的IO等待
,所以设置线程池参数时,只需设置为:
CPU核心数+1
注意,这里的加1是为了保证及时因为偶发的缺页中断亦或者某些异常导致某个线程消亡,也能利用额外的一个线程跑满CPU时钟周期,以确保在单位时间内