核心線程數的設置

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、高併發,耗時長

  • 解決這種類型任務的關鍵不在於線程池而在於整體架構的設計
  • 首先第一步:看看這些業務裏面某些數據是否能做緩存
  • 第二步:看看能否把這些高併發,耗時長的任務能不能拆分成。高併發,低耗時,或者低併發,高耗時的場景
  • 第三步:增加服務器數量,增加計算單元。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章