天天看點

Java多線程之線程池配置合理線程數

代碼檢視公司伺服器或阿裡雲是幾核的

合理線程數配置之CPU密集型

合理線程數配置之IO密集型

要合理配置線程數首先要知道公司伺服器或阿裡雲是幾核的

代碼檢視伺服器核數:

1

比如我的CPU核數4核,執行結果:

Java多線程之線程池配置合理線程數

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之間

繼續閱讀