關(guān)于生產(chǎn)環(huán)境如何配置線程數(shù),還是要根據(jù)業(yè)務(wù)來進行區(qū)分,我們時常會聽到什么IO密集型、CPU密集型任務(wù)...
大家知道什么樣的任務(wù)或者代碼會被認定為IO/CPU密集?
又是用什么樣的標準來認定IO/CPU密集?
如果你沒有明確的答案,那么就隨著這篇文章一起來聊一聊吧。
開篇之前我們先來了解下什么是CPU密集型和IO密集型
CPU密集型(CPU-bound)
CPU密集型也叫計算密集型,顧名思義就是應(yīng)用需要非常多的CPU計算資源,系統(tǒng)運作大部分的狀況是CPU Loading 100%,CPU要讀/寫I/O(硬盤/內(nèi)存),I/O在很短的時間就可以完成,而CPU還有許多運算要處理,CPU Loading很高。
在多核CPU時代,我們要讓每一個CPU核心都參與計算,將CPU的性能充分利用起來,這樣才算是沒有浪費服務(wù)器配置,如果在非常好的服務(wù)器配置上還運行著單線程程序那將是多么重大的浪費。
代碼體現(xiàn):
int n = 0.0
for (i in 0..9999999) {
n = Math.cos(i.toDouble()
)
平常開發(fā)應(yīng)用場景:CPU密集型任務(wù)一般來說:計算型代碼、Bitmap轉(zhuǎn)換、Gson轉(zhuǎn)換等
IO密集型(I/O bound)
對于IO密集型的應(yīng)用,就很好理解了,我們現(xiàn)在做的開發(fā)大部分都是WEB應(yīng)用,涉及到大量的網(wǎng)絡(luò)傳輸。不僅如此,與數(shù)據(jù)庫,與緩存間的交互也涉及到IO,一旦發(fā)生IO,線程就會處于等待狀態(tài),當IO結(jié)束,數(shù)據(jù)準備好后,線程才會繼續(xù)執(zhí)行。因此從這里可以發(fā)現(xiàn),對于IO密集型的應(yīng)用,我們可以多設(shè)置一些線程池中線程的數(shù)量,這樣就能讓在等待的這段時間內(nèi),線程可以去做其它事,提高并發(fā)處理效率。
代碼體現(xiàn):
BufferedReader br =new BufferedReader(new FileReader("xxxx"), 1024);
try {
while (br.readLine() != null) {}
} finally {
if (br != null) {
br.close()
}
平常開發(fā)應(yīng)用場景:文件讀寫、DB讀寫、網(wǎng)絡(luò)請求等
日常開發(fā)中如何優(yōu)化:
計算密集型任務(wù)的特點是要進行大量的計算,消耗CPU資源,比如計算圓周率、對視頻進行高清解碼等等,全靠CPU的運算能力。這種計算密集型任務(wù)雖然也可以用多任務(wù)完成,但是任務(wù)越多,花在任務(wù)切換的時間就越多,CPU執(zhí)行任務(wù)的效率就越低。所以,要最高效地利用CPU,計算密集型任務(wù)同時進行的數(shù)量應(yīng)當?shù)扔贑PU的核心數(shù)
線程數(shù) = CPU核數(shù)+1
也可以設(shè)置成CPU核數(shù)*2,這還是要看JDK的使用版本,以及CPU配置(服務(wù)器的CPU有超線程)。對于JDK1.8來說,里面增加了一個并行計算,計算密集型的較理想線程數(shù) = CPU內(nèi)核線程數(shù)*2
IO密集型,涉及到網(wǎng)絡(luò)、磁盤IO的任務(wù)都是IO密集型任務(wù),這類任務(wù)的特點是CPU消耗很少,任務(wù)的大部分時間都在等待IO操作完成(因為IO的速度遠遠低于CPU和內(nèi)存的速度)。對于IO密集型任務(wù),任務(wù)越多,CPU效率越高,但也有一個限度。常見的大部分任務(wù)都是IO密集型任務(wù),比如Web應(yīng)用
線程數(shù) = CPU核心數(shù)/(1-阻塞系數(shù))
這個阻塞系數(shù)一般為0.8~0.9之間,也可以取0.8或者0.9。套用公式,對于雙核CPU來說,它比較理想的線程數(shù)就是20,當然這都不是絕對的,需要根據(jù)實際情況以及實際業(yè)務(wù)來調(diào)整。
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、重慶小程序開發(fā)、集團企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了山城免費建站歡迎大家使用!
新聞標題:4.線程數(shù)設(shè)置-創(chuàng)新互聯(lián)
分享地址:http://jinyejixie.com/article40/deheeo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣、面包屑導航、定制開發(fā)、網(wǎng)站導航、網(wǎng)站內(nèi)鏈、搜索引擎優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容