代碼檢視公司伺服器或阿裡雲是幾核的
合理線程數配置之CPU密集型
合理線程數配置之IO密集型
要合理配置線程數首先要知道公司伺服器或阿裡雲是幾核的
代碼檢視伺服器核數:
1
比如我的CPU核數4核,執行結果:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISPrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdsATOfd3bkFGazxCMx8VesATMfhHLlN3XnxCMwEzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5CZidzMwgTYlhjZiZmZmdDOwUTOxYDMwgjNmFjNkZmM28CXyAzLchDMxIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjL4M3Lc9CX6MHc0RHaiojIsJye.png)
CPU密集的意思是該任務需要大量的運算,而沒有阻塞,CPU一直全速運作。
CPU密集任務隻有在真正的多核CPU上才可能得到加速(通過多線程),而在單核CPU上,無論你丌幾個模拟的多線程該任務都不可能得到加速,因為CPU總的運算能力就那些。
CPU密集型任務配置盡可能少的線程數量:
一般公式:CPU核數+1個線程的線程池
方法一:
由于IO密集型任務線程并不是一直在執行任務,則應配置盡可能多的線程,如CPU核數*2
方法二:
IO密集型,即該任務需要大量的IO,即大量的阻塞。
在單線程上運IO蕊集型的任務會導緻浪費大量的CPU運算能力浪費在等待。
是以在IO密集型任務中使用多線程可以大大的加速程式運作,即使在單核CPU上,這種加速主要就是利用了被浪費掉的阻塞時間。
IO密集型時,大部分線程都阻塞,故需要多配置線程數:
參考公式:CPU核數/(1-阻系數)
比如8核CPU:8/(1.0.9)=80個線程數
阻塞系數在0.8~0.9之間