核心線程數設置


1、不同種類的線程池都適用什么場景呢?

2、選擇的關鍵點是:1 盡量減少線程切換和管理的開支,2最大化利用cpu

3、並發比較高,耗時比較短的任務

  • 這種場景適合線程盡量少,因為如果線程太多,任務執行時間段很快就執行完了,有可能出現線程切換和管理多耗費的時間,大於任務執行的時間,這樣效率就低了。線程池線程數可以設置為CPU核數+1

4、並發比較低,耗時比較長的任務

  • a) IO密集型:假如是業務時間長集中在IO操作上,也就是IO密集型的任務,因為IO操作並不占用CPU,所以可以加大線程池中的線程數目,這樣一個io任務可能會執行很長時間,所以在執行io操作時它的cpu可以讓出來去執行別的任務,讓CPU處理更多的業務。線程池線程數可以設置為CPU核數*2
  • b) 計算密集型: 假如是業務時間長集中在計算操作上,也就是計算密集型任務,這個操作也需要使用cpu的,如果線程太多並且每個任務又特別耗時不但會影響其他業務,嚴重時還會導致cpu飆升100%,所以線程數不宜太多

5、並發高,耗時長的任務

  • 解決這種類型任務的關鍵不在於線程池而在於整體架構的設計
  • 首先第一步:看看這些業務里面某些數據是否能做緩存
  • 第二步:看看能否把這些高並發,耗時長的任務能不能拆分成。高並發,低耗時,或者低並發,高耗時的場景
  • 第三步:增加服務器數量,增加計算單元。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM