面試官:你是如何判斷一個線程池需要創建多少個線程

      網友投稿 874 2025-04-01

      目前按照我看過的一些開源框架,線程池中線程數量主要是根據應用的類型:IO密集型(2n +1 ),CPU密集型設置為 n + 1。


      但實際情況往往復雜的多,不會按照這個進行設置,進行這種設置,通常是框架層面,例如netty,dubbo這種底層通訊框架會參考這樣的標準去設置,在實際業務中往往不會這樣做。

      對于IO密集型網上還有一個公式:線程數 = CPU核心數/(1-阻塞系數)

      這個阻塞系數一般為0.8~0.9之間,可以取0.8或者0.9。

      我覺這個公式有一定的道理,考慮了阻塞的概念。

      在我們的業務開發中,基本上都是IO密集型,因為往往都會去操作數據庫,訪問redis,es等存儲型組件,涉及磁盤IO,網絡IO。

      那什么場景下是CPU密集型呢?純計算類,例如計算圓周率的位數,當然我們基本接觸不到。

      IO密集型,可以考慮多設置一些線程,主要目的是可以增加IO的并發度,CPU密集型不宜設置過多線程,因為是會造成線程切換,浪費時間。

      接下來我們以一個實際的場景來說明如何設置線程數量。

      一個4C8G的機器上部署了一個MQ消費者,在RocketMQ的實現中,消費端也是用一個線程池來消費線程的,那這個線程數要怎么設置呢?

      如果按照 2n + 1 的公式,線程數設置為 9個,但在我們實踐過程中發現如果增大線程數量,會顯著提高消息的處理能力,說明 2n + 1 對于業務場景來說,并不太合適。

      如果套用 線程數 = CPU核心數/(1-阻塞系數) 阻塞系數取 0.8 ,線程數為 20 。阻塞系數取 0.9,大概線程數40,20個線程數我覺得可以。

      如果我們發現數據庫的操作耗時比較多,此時可以繼續提高阻塞系數,從而增大線程數量。

      **那我們怎么判斷需要增加更多線程呢?**其實我覺得我們可以用jstack命令查看一下進程的線程棧,如果發現線程池中大部分線程都處于等待獲取任務,則說明線程夠用,如下圖所示:

      面試官:你是如何判斷一個線程池需要創建多少個線程

      如果大部分線程都處于運行狀態,可以繼續適當調高線程數量。

      任務調度

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:Excel文檔中多列數據進行排序的方法(怎么對多列數據進行排序)
      下一篇:RAID磁盤陣列
      相關文章
      亚洲人成色77777在线观看大| 国产成人精品亚洲2020| 亚洲综合精品伊人久久| 久久精品国产精品亚洲毛片| 亚洲日韩精品一区二区三区无码 | 亚洲精品美女久久久久99| 国产成人精品日本亚洲语音| 亚洲精品美女久久7777777| 亚洲看片无码在线视频| 亚洲综合丁香婷婷六月香| 亚洲六月丁香六月婷婷色伊人| 久久精品国产亚洲AV电影| 久久久久亚洲AV无码麻豆| 蜜芽亚洲av无码精品色午夜| 亚洲欧洲国产精品你懂的| 国产AV无码专区亚洲A∨毛片| 精品国产亚洲一区二区三区| 亚洲第一极品精品无码久久| 国产亚洲精品岁国产微拍精品| 亚洲色偷偷偷鲁综合| 亚洲老妈激情一区二区三区| 亚洲精品少妇30p| 亚洲嫩草影院久久精品| 亚洲精品一卡2卡3卡三卡四卡| 亚洲精品国产电影午夜| 亚洲国产精品成人精品软件| 亚洲免费一级视频| 亚洲 欧洲 视频 伦小说| 亚洲人成网站色7799| 久久水蜜桃亚洲AV无码精品| 亚洲成a人无码av波多野按摩| 亚洲国产香蕉人人爽成AV片久久 | 亚洲精品无码久久久久AV麻豆| 亚洲免费在线观看| 亚洲色WWW成人永久网址| 亚洲免费视频网站| 亚洲国产成+人+综合| 亚洲粉嫩美白在线| 国产精品国产亚洲区艳妇糸列短篇 | 亚洲欧美成人综合久久久| 色欲aⅴ亚洲情无码AV|