線程池創(chuàng)建多少線程比較合理

線程池創(chuàng)建多少線程比較合理?

  • 在設(shè)置線程池線程個數(shù)的時候,經(jīng)常會想到這個問題,是不是設(shè)置的線程數(shù)越多越好?理解這個問題之前我們要先清楚的知道我們?yōu)槭裁词褂枚嗑€程。

為什么會使用多線程

  • 使用多線程的主要目的我們應(yīng)該都能回答的出來就是提高程序的性能,這個提高性能其實是指降低延遲:發(fā)生請求到接收到數(shù)據(jù)的時間,和 提搞吞吐量:單位時間能可以處理更多的請求。
  • 將近延遲和提高吞吐量對應(yīng)的方法有兩種: 優(yōu)化算法 和 將機器的硬件性能發(fā)揮到極致
    • 1 優(yōu)化算法:降低時間和空間復(fù)雜度,使的程序執(zhí)行時間更短。

    • 2 將硬件的性能發(fā)揮到極致,具體的指提高I/O 和cpu的利用率
      如何提高I/O 和cpu的利用率的舉例:
      如果單核系統(tǒng)中 只有一個程序執(zhí)行又有IO操作 和Cpu計算的代碼,當程序執(zhí)行IO操作的時候,Cpu其實是空閑的,反之IO是空閑的,如果這個時候用兩個線程去跑這段代碼,一個線程執(zhí)行IO操作 ,一個線程執(zhí)行Cpu計算 ,這時IO和Cpu的利用率是不是發(fā)揮了極致?

      創(chuàng)建多少線程比較合適

      經(jīng)過上面的分析,我們知道創(chuàng)建多少線程能夠?qū)⒂布睦寐蔬_到最高才是最好的線程數(shù)。
      我們從線程的應(yīng)用場景來分析, 由于IO操作比Cpu計算耗時要久的多的,如果我們一段程序有IO操作 和 Cpu計算 我們可以稱之為:IO密集型計算。 程序中沒有IO操作 只有Cpu的話  稱之為Cpu密集型程序。
      
  1. IO密集計算,如何將硬件利用率達到極致呢 我們將 R = IO耗時 / Cpu耗時 我們從上面的例子來看 如果IO耗時/Cpu耗時 = 10 (我們平??梢杂霉ぞ遖pm來統(tǒng)計這個比例) 創(chuàng)建線程A 執(zhí)行io操作 我們希望IO操作的時候 Cpu不能閑著 你們就應(yīng)該創(chuàng)建10個線程去執(zhí)行Cpu計算 當Io操作完畢后剛好Cpu也執(zhí)行完畢 ,他們的利用率都是百分之100 在執(zhí)行這段代碼的時候。這個例子我們要創(chuàng)建 1+ 10 = 11個線程執(zhí)行起來效率更高,于是我們就得到了公式: 1+ I/O耗時/Cpu耗時,如果是多核Cpu 最佳線程數(shù) =CPU 核數(shù) * [ 1 +(I/O 耗時 / Cpu 耗時)
  2. Cpu密集型 這個就很簡單了 Cpu的核數(shù) = 線程數(shù)就行,一般我們會設(shè)置 Cpu核數(shù)+1 防止由于其他因素導(dǎo)致線程阻塞等。

結(jié)束語

看到這里希望大家在來回復(fù)創(chuàng)建多個線程比較合理這個問題有了新的思路,希望能夠幫助各位小伙伴,

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一. 操作系統(tǒng)概念 操作系統(tǒng)位于底層硬件與應(yīng)用軟件之間的一層.工作方式: 向下管理硬件,向上提供接口.操作系統(tǒng)進行...
    月亮是我踢彎得閱讀 6,151評論 3 28
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴謹 對...
    cosWriter閱讀 11,632評論 1 32
  • 必備的理論基礎(chǔ) 1.操作系統(tǒng)作用: 隱藏丑陋復(fù)雜的硬件接口,提供良好的抽象接口。 管理調(diào)度進程,并將多個進程對硬件...
    drfung閱讀 3,755評論 0 5
  • Java-Review-Note——4.多線程 標簽: JavaStudy PS:本來是分開三篇的,后來想想還是整...
    coder_pig閱讀 1,770評論 2 17
  • iOS多線程編程 基本知識 1. 進程(process) 進程是指在系統(tǒng)中正在運行的一個應(yīng)用程序,就是一段程序的執(zhí)...
    陵無山閱讀 6,340評論 1 14

友情鏈接更多精彩內(nèi)容