一文幫你理解 執行緒池建立多少執行緒比較合理?

2022-07-25 15:33:22 字數 593 閱讀 9021

經過上面的分析,我們知道建立多少執行緒能夠將硬體的利用率達到最高才是最好的執行緒數。

我們從執行緒的應用場景來分析, 由於io操作比cpu計算耗時要久的多的,如果我們一段程式有io操作 和 cpu計算 我們可以稱之為:io密集型計算。 程式中沒有io操作 只有cpu的話 稱之為cpu密集型程式。

io密集計算,如何將硬體利用率達到極致呢 我們將 r = io耗時 / cpu耗時 我們從上面的例子來看 如果io耗時/cpu耗時 = 10 (我們平常可以用工具apm來統計這個比例) 建立執行緒a 執行io操作 我們希望io操作的時候 cpu不能閒著 所以就應該建立10個執行緒去執行cpu計算 當io操作完畢後剛好cpu也執行完畢 ,他們的利用率都是百分之100 在執行這段**的時候。這個例子我們要建立 1+ 10 = 11個執行緒執行起來效率更高,於是我們就得到了公式: 1+ i/o耗時/cpu耗時,如果是多核cpu 最佳執行緒數 =cpu 核數 * [ 1 +(i/o 耗時 / cpu 耗時)

cpu密集型 這個就很簡單了 cpu的核數 = 執行緒數就行,一般我們會設定 cpu核數+1 防止由於其他因素導致執行緒阻塞等。

看到這裡想必大家在回答建立多個執行緒比較合理這個問題有了新的思路,希望能夠幫助各位小夥伴,

乙個程序可以建立多少執行緒

理論上,乙個程序可用虛擬空間是2g,預設情況下,執行緒的棧的大小是1mb,所以理論上最多只能建立2048個執行緒。如果要建立多於2048的話,必須修改編譯器的設定。include include includehandle hprocess handle hthread dword winapi a...

java執行緒池的理解及總結(一)

需求 常用的連線池有 c3p0 佔80 以上的使用率,是比較常用的 dbcp 主要的模型圖如下 如下 public class mydatasource implements datasource override 獲得連線的方法 public connection getconnection th...

多執行緒安全問題 一文深入理解以及解決方案

執行緒同步 執行緒安全是多執行緒程式設計時的電腦程式 中的乙個概念。在擁有共享資料的多條執行緒並行執行的程式中,執行緒安全的 會通過同步機制保證各個執行緒都可以正常且正確的執行,不會出現資料汙染等意外情況。package thread.safe auther carroll date 2020 4 ...