首先要考慮執行的任務是什么類型:
1、IO密集型
2、計算密集型
IO密集型:以大量任務讀寫數據庫,讀寫文件為主,內存中的運算很少,線程基本阻塞在IO上面。這種情況下,盡量多開啟一些線程并發做IO操作,因為在IO過程中,CPU幾乎是閑置的。
計算密集型:任務以內存中的計算為主。這時候CPU是滿負荷工作,即使開再多的線程,只會徒增線程上下午切換的成本。這種情況下,CPU是幾核,就開幾個線程。
線程數 = (IO時間 + CPU工作時間) / CPU工作時間 * 核數
IO密集型,相當于CPU工作時間無窮小的情況,這時候得到的線程數很大。
計算密集型,相當于IO時間無窮小,計算得的線程數約等于CPU核數。