1. 程式人生 > >執行緒數設多少合適(不看後悔,一看必懂)

執行緒數設多少合適(不看後悔,一看必懂)

①工作執行緒數是不是設定的越大越好?
        回答:肯定不是的
        1)一來伺服器CPU核數有限,同時併發的執行緒數是有限的,1核CPU設定10000個工作執行緒沒有意義
        2)執行緒切換是有開銷的,如果執行緒切換過於頻繁,反而會使效能降低

②如果CPU是單核,設定多執行緒有意義麼,能提高併發效能麼?
        回答:即使是單核,使用多執行緒也是有意義的
        1)多執行緒編碼可以讓我們的服務/程式碼更加清晰         
         2)通常來說,Worker執行緒一般不會一直佔用CPU進行計算,此時即使CPU是單核,增加Worker執行緒也能夠提高併發,因為這個執行緒在休息的時候,其他的執行緒可以繼續工作

 

  一般來說,非CPU密集型的業務(加解密、壓縮解壓縮、搜尋排序等業務是CPU密集型的業務),瓶頸都在後端資料庫,本地CPU計算的時間很少,所以設定幾十或者幾百個工作執行緒也都是可能的。

 

N核伺服器,通過執行業務的單執行緒分析出本地計算時間為x,等待時間為y,則工作執行緒數(執行緒池執行緒數)設定為 N*(x+y)/x,能讓CPU的利用率最大化。