1. 代碼檢視伺服器的核心數
要合理配置線程數首先要知道公司伺服器是幾核的
代碼檢視伺服器核數:
2. 合理線程數配置之CPU密集型
CPU密集的意思是該任務需要大量的運算,而沒有阻塞,CPU一直全速運作。
CPU密集任務隻有在真正的多核CPU上才可能得到加速(通過多線程),而在單核CPU上,無論你開幾個模拟的多線程該任務都不可能得到加速,因為CPU總的運算能力就那些。
CPU密集型任務配置盡可能少的線程數量:
一般公式:CPU核數+1個線程的線程池
3. 合理線程數配置之IO密集型
IO包括:資料庫互動,檔案上傳下載下傳,網絡傳輸等
方法一:
由于IO密集型任務線程并不是一直在執行任務,則應配置盡可能多的線程,如CPU核數*2
方法二:
IO密集型,即該任務需要大量的IO,即大量的阻塞。
在單線程上運IO密集型的任務會導緻浪費大量的CPU運算能力浪費在等待。
是以在IO密集型任務中使用多線程可以大大的加速程式運作,即使在單核CPU上,這種加速主要就是利用了被浪費掉的阻塞時間。
IO密集型時,大部分線程都阻塞,故需要多配置線程數:
參考公式:CPU核數 /(1 - 阻系數)
比如8核CPU:8/(1 - 0.9)=80個線程數
阻塞系數在0.8~0.9之間