線程池的線程數(shù)怎么確定

public ThreadPoolExecutor(int corePoolSize,
                              int maximumPoolSize,
                              long keepAliveTime,
                              TimeUnit unit,
                              BlockingQueue<Runnable> workQueue,
                              RejectedExecutionHandler handler) {
    ......
}

有兩個重要的參數(shù)設(shè)置:核心線程數(shù)corePoolSize遮糖,最大線程數(shù)maximumPoolSize绣的。


6401.png

線程和哪些因素有關(guān)?

  1. CPU
    在最開始介紹多線程《多線程的由淺及深》時欲账,介紹到線程共享進程的上下文環(huán)境屡江,為更細粒度的CPU時間段。所以線程數(shù)的確定和CPU有關(guān)赛不。至于CPU的核數(shù)和線程數(shù)的關(guān)系惩嘉,可以查看這篇文章:CPU的核心數(shù)、線程數(shù)的關(guān)系和區(qū)別踢故。(多線程實際上是計算機多種資源的并行運用文黎,跟CPU有幾個核心是沒什么關(guān)系的)

  2. IO
    IO分為磁盤IO和網(wǎng)絡(luò)IO。影響磁盤的關(guān)鍵因數(shù)是磁盤服務(wù)時間殿较,即磁盤完成一個I/O請求所花費的時間耸峭,它由尋道時間、旋轉(zhuǎn)延遲和數(shù)據(jù)傳輸時間三部分構(gòu)成淋纲。衡量其關(guān)鍵指標劳闹,大致是IOPS、吞吐量等洽瞬。影響網(wǎng)絡(luò)IO的關(guān)鍵因素是服務(wù)器響應(yīng)延時 + 帶寬限制 + 網(wǎng)絡(luò)延時 + 跳轉(zhuǎn)路由延時 + 本地接收延時玷或。

  3. 并行
    多個cpu實例或者多臺機器同時執(zhí)行一段處理邏輯

  4. 并發(fā)
    CPU不斷切換線程來實現(xiàn)多路復(fù)用,以提升效率片任。通過cpu調(diào)度算法偏友,看上去同時執(zhí)行,實際上從cpu操作層面不是真正的同時对供。通常會用TPS或者QPS位他。

任務(wù)的性質(zhì)

  1. CPU密集型任務(wù)
    要進行大量的計算氛濒,消耗CPU資源,比如計算圓周率鹅髓、對視頻進行高清解碼等等舞竿,全靠CPU的運算能力。要最高效地利用CPU窿冯,計算密集型任務(wù)同時進行的數(shù)量應(yīng)當(dāng)?shù)扔贑PU的核心數(shù)骗奖。

    一般配置線程數(shù)=CPU總核心數(shù)+1 (+1是為了利用等待空閑)

  2. IO密集型任務(wù)
    這類任務(wù)的CPU消耗很少,任務(wù)的大部分時間都在等待IO操作完成(因為IO的速度遠遠低于CPU和內(nèi)存的速度)醒串。常見的大部分任務(wù)都是IO密集型任務(wù)执桌,比如Web應(yīng)用。對于IO密集型任務(wù)芜赌,任務(wù)越多仰挣,CPU效率越高(但也有限度)。

    一般配置線程數(shù)=CPU總核心數(shù) * 2 +1

總結(jié)

根據(jù)并發(fā)編程網(wǎng)的《如何合理地估算線程池大小》一文中的提示缠沈,

最佳線程數(shù)目 = (線程等待時間與線程CPU時間之比 + 1)* CPU數(shù)目

所以線程等待時間所占比例越高膘壶,需要越多線程。線程CPU時間所占比例越高洲愤,需要越少線程

問題

  1. 是否使用線程池就一定比單線程效率高呢颓芭?

    否。比如Redis(點擊查看)柬赐。

  2. 并發(fā)編程網(wǎng)的一個問題:

    2.1 高并發(fā)亡问、任務(wù)執(zhí)行時間短的業(yè)務(wù)怎樣使用線程池?

    線程池線程數(shù)可以設(shè)置為CPU核數(shù)+1躺率,減少線程上下文的切換

    2.2 并發(fā)不高玛界、任務(wù)執(zhí)行時間長的業(yè)務(wù)怎樣使用線程池?

     a)假如是業(yè)務(wù)時間長集中在IO操作上悼吱,也就是IO密集型的任務(wù)慎框,因為IO操作并不占用CPU,所以不要讓所有的CPU閑下來后添,可以適當(dāng)加大線程池中的線程數(shù)目笨枯,讓CPU處理更多的業(yè)務(wù)         
     b)假如是業(yè)務(wù)時間長集中在計算操作上,也就是計算密集型任務(wù)遇西,線程池中的線程數(shù)設(shè)置得少一些馅精,減少線程上下文的切換 
    

    2.3 并發(fā)高、業(yè)務(wù)執(zhí)行時間長的業(yè)務(wù)怎樣使用線程池粱檀?

    并發(fā)高洲敢、業(yè)務(wù)執(zhí)行時間長,解決這種類型任務(wù)的關(guān)鍵不在于線程池而在于整體架構(gòu)的設(shè)計茄蚯,看看這些業(yè)務(wù)里面某些數(shù)據(jù)是否能做緩存是第一步压彭,增加服務(wù)器是第二步睦优,以及線程池的設(shè)置。最后壮不,業(yè)務(wù)執(zhí)行時間長的問題汗盘,也可能需要分析一下,看看能不能使用中間件對任務(wù)進行拆分和解耦询一。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末隐孽,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子健蕊,更是在濱河造成了極大的恐慌菱阵,老刑警劉巖可柿,帶你破解...
    沈念sama閱讀 221,888評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異害驹,居然都是意外死亡嬉愧,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,677評論 3 399
  • 文/潘曉璐 我一進店門掠哥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事世舰。” “怎么了槽卫?”我有些...
    開封第一講書人閱讀 168,386評論 0 360
  • 文/不壞的土叔 我叫張陵跟压,是天一觀的道長。 經(jīng)常有香客問我歼培,道長震蒋,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,726評論 1 297
  • 正文 為了忘掉前任躲庄,我火速辦了婚禮查剖,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘噪窘。我一直安慰自己笋庄,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,729評論 6 397
  • 文/花漫 我一把揭開白布倔监。 她就那樣靜靜地躺著直砂,像睡著了一般。 火紅的嫁衣襯著肌膚如雪浩习。 梳的紋絲不亂的頭發(fā)上静暂,一...
    開封第一講書人閱讀 52,337評論 1 310
  • 那天,我揣著相機與錄音谱秽,去河邊找鬼洽蛀。 笑死闪盔,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的辱士。 我是一名探鬼主播泪掀,決...
    沈念sama閱讀 40,902評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼颂碘!你這毒婦竟也來了异赫?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,807評論 0 276
  • 序言:老撾萬榮一對情侶失蹤头岔,失蹤者是張志新(化名)和其女友劉穎塔拳,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體峡竣,經(jīng)...
    沈念sama閱讀 46,349評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡靠抑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,439評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了适掰。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片颂碧。...
    茶點故事閱讀 40,567評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖类浪,靈堂內(nèi)的尸體忽然破棺而出载城,到底是詐尸還是另有隱情,我是刑警寧澤费就,帶...
    沈念sama閱讀 36,242評論 5 350
  • 正文 年R本政府宣布诉瓦,位于F島的核電站,受9級特大地震影響力细,放射性物質(zhì)發(fā)生泄漏睬澡。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,933評論 3 334
  • 文/蒙蒙 一眠蚂、第九天 我趴在偏房一處隱蔽的房頂上張望煞聪。 院中可真熱鬧,春花似錦河狐、人聲如沸米绕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,420評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽栅干。三九已至,卻和暖如春捐祠,著一層夾襖步出監(jiān)牢的瞬間碱鳞,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,531評論 1 272
  • 我被黑心中介騙來泰國打工踱蛀, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留窿给,地道東北人贵白。 一個月前我還...
    沈念sama閱讀 48,995評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像崩泡,于是被迫代替她去往敵國和親禁荒。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,585評論 2 359

推薦閱讀更多精彩內(nèi)容