1、cpu 密集型、計算密集型
計算密集型,顧名思義就是應用需要非常多的cpu計算資源,在多核cpu時代,我們要讓每乙個cpu核心都參與計算,將cpu的效能充分利用起來,這樣才算是沒有浪費伺服器配置,如果在非常好的伺服器配置上還執行著單執行緒程式那將是多麼重大的浪費。對於計算密集型的應用,完全是靠cpu的核數來工作,所以為了讓它的優勢完全發揮出來,避免過多的執行緒上下文切換,比較理想方案是:執行緒數 = cpu核數+1 也可以設定成cpu核數2,這還是要看jdk的使用版本,以及cpu配置(伺服器的cpu有超執行緒)。對於jdk1.8來說,裡面增加了乙個平行計算,計算密集型的較理想執行緒數 = cpu核心執行緒數2
2、io密集型
對於io密集型的應用,就很好理解了,我們現在做的開發大部分都是web應用,涉及到大量的網路傳輸,不僅如此,與資料庫,與快取間的互動也涉及到io,一旦發生io,執行緒就會處於等待狀態,當io結束,資料準備好後,執行緒才會繼續執行。因此從這裡可以發現,對於io密集型的應用,我們可以多設定一些執行緒池中線程的數量,這樣就能讓在等待io的這段時間內,執行緒可以去做其它事,提高併發處理效率。 那麼這個執行緒池的資料量是不是可以隨便設定呢?當然不是的,請一定要記得,執行緒上下文切換是有代價的。目前總結了一套公式,對於io密集型應用:執行緒數 = cpu核心數/(1-阻塞係數) 這個阻塞係數一般為0.8~0.9之間,也可以取0.8或者0.9。套用公式,對於雙核cpu來說,它比較理想的執行緒數就是20,當然這都不是絕對的,需要根據實際情況以及實際業務來調整。
cpu密集型 計算密集型 io密集型 簡介
cpu密集型 cpu bound cpu密集型也叫計算密集型,指的是系統的硬碟 記憶體效能相對cpu要好很多,此時,系統運作大部分的狀況是cpu loading 100 cpu要讀 寫i o 硬碟 記憶體 i o在很短的時間就可以完成,而cpu還有許多運算要處理,cpu loading很高。在多重程...
計算密集型 IO密集型 資料密集型
2 計算密集型任務雖然也可以用多工完成,但是任務越多,花在任務切換的時間就越多,cpu執行任務的效率就越低,所以,要最高效地利用cpu,計算密集型任務同時進行的數量應當等於cpu的核心數。3 計算密集型任務由於主要消耗cpu資源,因此,執行效率至關重要。python這樣的指令碼語言執行效率很低,完全...
CPU計算密集型和IO密集型
cpu計算密集型和io密集型 計算密集型任務由於主要消耗cpu資源,因此,執行效率至關重要。python這樣的指令碼語言執行效率很低,完全不適合計算密集型任務。對於計算密集型任務,最好用c語言編寫。第二種任務的型別是io密集型,涉及到網路 磁碟io的任務都是io密集型任務,這類任務的特點是cpu消耗...