线程池-参数篇:1.线程数

2020-08-25  本文已影响0人  rock_fish
1. 理解CPU的核心数、线程数的关系和区别
2. 如何合理地估算线程池大小

以下几篇文章有讨论这个话题:
根据CPU核心数确定线程池并发线程数
如何合理地估算线程池大小?

引用某知乎同学的总结如下:原文链接

一般说来,大家认为线程池的大小经验值应该这样设置:(其中N为CPU的个数)

//获取处理器的数量 
System.out.println(Runtime.getRuntime().availableProcessors());

如果一台服务器上只部署这一个应用并且只有这一个线程池,那么这种估算或许合理,具体还需自行测试验证。但是,IO优化中,这样的估算公式可能更适合:

下面举个例子:

比如平均每个线程CPU运行时间为0.5s,而线程等待时间(非CPU运行时间,比如IO)为1.5s,CPU核心数为8,那么根据上面这个公式估算得到:((0.5+1.5)/0.5)*8=32。这个公式进一步转化为:

上一篇下一篇

猜你喜欢

热点阅读