如何設置線程池的線程數?


  合理的設置線程池的線程數需要針對不同的任務類型而定,任務類型可以分為cpu密集型、IO密集型和混合型。

1)cpu密集型

  cpu密集型指的是線程處理任務時,cpu參與計算的時間比較多,這種情況下,如果設置的線程數過多,會增加上下文的切換次數,帶來額外的開銷。

線程數的設定公式是:線程數=(cpu核心數+1)。

2)IO密集型

  IO密集型是指在處理任務時,IO過程所占用的時間較多,在這種情況下,線程數的計算方法可以分為兩種:

  方法一:線程數=cpu核心數*2,cpu所占用時間不多,可讓cpu在等待IO的時候去處理其他任務,充分利用cpu。

  方法二:線程等待時間比例越多,需要更多的線程,而線程cpu所占時間越多,則需要更少線程數。

      線程數=((線程等待時間+線程cpu時間)/線程cpu時間)*cpu核心數。

3)混合型

  對於混合型,可以將任務划分成cpu密集型任務與IO密集型任務,分別針對這兩種任務使用不同的線程池去處理。  


免責聲明!

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



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