查詢電腦的邏輯核心數(shù)泥栖,不同業(yè)務(wù)下如何配置線程池

邏輯核心數(shù)

一般百度如何獲取電腦的邏輯核心數(shù)疟位,都會(huì)出現(xiàn)這段代碼:

Runtime.getRuntime().availableProcessors()

然而阴绢,問(wèn)題在于Runtime.getRuntime().availableProcessors()也并非都能返回你所期望的數(shù)值。比如說(shuō)喉童,在我的雙核1-2-1機(jī)器上撇寞,它返回的是2,這是對(duì)的堂氯。不過(guò)在我的1-4-2(1個(gè)物理處理器-4個(gè)核-每個(gè)核2個(gè)超線程=也就是通常說(shuō)的4核8線程)機(jī)器 上蔑担,也就是一個(gè)CPU插槽,4核咽白,每個(gè)核2個(gè)超線程啤握,這樣的話會(huì)返回8。不過(guò)我其實(shí)只有4個(gè)核晶框,如果代碼的瓶頸是在CPU這塊的話排抬,我會(huì)有7個(gè)線程在同時(shí) 競(jìng)爭(zhēng)CPU周期,而不是更合理的4個(gè)線程授段。如果我的瓶頸是在內(nèi)存這的話蹲蒲,那這個(gè)測(cè)試我可以獲得7倍的性能提升。

不過(guò)這還沒(méi)完侵贵!Java Champions上的一個(gè)哥們發(fā)現(xiàn)了一種情況届搁,他有一臺(tái)16-4-2的機(jī)器 (也就是16個(gè)CPU插槽,每個(gè)CPU4個(gè)核,每核兩個(gè)超線程咖祭,返回的值居然是16掩宜!從我的i7 Macbook pro上的結(jié)果來(lái)看,我覺(jué)得應(yīng)該返回的是1642=128么翰。在這臺(tái)機(jī)器上運(yùn)行Java 8的話牺汤,它只會(huì)將通用的FJ池的并發(fā)數(shù)設(shè)置成15。正如 Brian Goetz所指出的浩嫌,“虛擬機(jī)其實(shí)不清楚什么是處理器檐迟,它只是去請(qǐng)求操作系統(tǒng)返回一個(gè)值。同樣的码耐,操作系統(tǒng)也不知道怎么回事追迟,它是去問(wèn)的硬件設(shè)備。硬件會(huì)告訴它一個(gè)值骚腥,通常來(lái)說(shuō)是硬件線程數(shù)敦间。操作系統(tǒng)相信硬件說(shuō)的,而虛擬機(jī)又相信操作系統(tǒng)說(shuō)的束铭±椋”

所以不同業(yè)務(wù)下的情況不盡相同,不能一概而論都根據(jù)核心數(shù)量去統(tǒng)一配置線程池契沫。

那么如果我們線程池主要用于處理 IO 密集型的任務(wù)時(shí)带猴,如讀取文件,數(shù)據(jù)庫(kù)連接懈万,網(wǎng)絡(luò)通訊等拴清,我們都知道 IO 讀寫(xiě)的速度,與CPU相比的話会通,肯定是慢的多口予,所以一般建議去機(jī)器邏輯核心數(shù)的 2 倍。

多個(gè)線程池

一般項(xiàng)目可能會(huì)創(chuàng)建多個(gè)線程池渴语,因?yàn)楸热?種業(yè)務(wù)苹威,一種要求不高,但是數(shù)量極多驾凶,可以重試牙甫,一種是數(shù)量小,要求及時(shí)调违,如果放在一起窟哺,會(huì)因?yàn)槎嗟臄?shù)量可能影響你那筆少的,

線程池用來(lái)管理線程技肩,一般需要一個(gè)定時(shí)線程池且轨,一個(gè)業(yè)務(wù)線程池浮声,一個(gè)io線程池,有的時(shí)候旋奢,定時(shí)線程池和業(yè)務(wù)線程池也可以共用泳挥,比如netty的線程池就可以共用。業(yè)務(wù)線程池用于處理核心業(yè)務(wù)至朗,一般要求速度快屉符,延遲低,而io線程池一般用于網(wǎng)絡(luò)交互锹引,比如數(shù)據(jù)庫(kù)操作矗钟,rpc請(qǐng)求,或者磁盤(pán)讀寫(xiě)嫌变。

業(yè)務(wù)場(chǎng)景

主要要先看我們線程池用于執(zhí)行的任務(wù)性質(zhì)吨艇。如果該線程池主要用于處理計(jì)算密集型的任務(wù)時(shí),如加密腾啥、大數(shù)分解等主要利用CPU資源的任務(wù)东涡,一般建議將我們的線程數(shù)設(shè)置為機(jī)器的核心數(shù)(邏輯核心)+ 1

這里為什么要進(jìn)行加一呢?這是為了避免我們CPU會(huì)出現(xiàn)頁(yè)缺失的情況(頁(yè)缺失是指線程執(zhí)行所需的數(shù)據(jù)還未來(lái)來(lái)的及加載倘待,部分還存在于磁盤(pán)之上软啼,那么這個(gè)線程就會(huì)被掛起。)


那么如果我們線程池主要用于處理 IO 密集型的任務(wù)時(shí)延柠,如讀取文件,數(shù)據(jù)庫(kù)連接锣披,網(wǎng)絡(luò)通訊等贞间,我們都知道 IO 讀寫(xiě)的速度,與CPU相比的話雹仿,肯定是慢的多增热,所以一般建議去機(jī)器邏輯核心數(shù)的 2 倍。

另外如果我們線程池既處理計(jì)算密集型任務(wù)胧辽,也處理IO密集型任務(wù)時(shí)峻仇。那么我們應(yīng)該如何處理?

IO 密集型所花費(fèi)的時(shí)間遠(yuǎn)大于計(jì)算密集型花費(fèi)的時(shí)間邑商,拆分意義不大摄咆,這時(shí)就沒(méi)有必要拆分;但是如果 IO 密集型花費(fèi)的時(shí)間約等于計(jì)算密集型的時(shí)間人断,則建議將其拆分開(kāi)來(lái)吭从。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市恶迈,隨后出現(xiàn)的幾起案子涩金,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件步做,死亡現(xiàn)場(chǎng)離奇詭異副渴,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)全度,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)煮剧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人讼载,你說(shuō)我怎么就攤上這事轿秧。” “怎么了咨堤?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵菇篡,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我一喘,道長(zhǎng)驱还,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任凸克,我火速辦了婚禮议蟆,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘萎战。我一直安慰自己咐容,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布蚂维。 她就那樣靜靜地躺著戳粒,像睡著了一般。 火紅的嫁衣襯著肌膚如雪虫啥。 梳的紋絲不亂的頭發(fā)上蔚约,一...
    開(kāi)封第一講書(shū)人閱讀 49,007評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音涂籽,去河邊找鬼苹祟。 笑死,一個(gè)胖子當(dāng)著我的面吹牛评雌,可吹牛的內(nèi)容都是我干的树枫。 我是一名探鬼主播,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼景东,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼团赏!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起耐薯,我...
    開(kāi)封第一講書(shū)人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤舔清,失蹤者是張志新(化名)和其女友劉穎丝里,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體体谒,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡杯聚,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了抒痒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片幌绍。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖故响,靈堂內(nèi)的尸體忽然破棺而出傀广,到底是詐尸還是另有隱情,我是刑警寧澤彩届,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布伪冰,位于F島的核電站,受9級(jí)特大地震影響樟蠕,放射性物質(zhì)發(fā)生泄漏贮聂。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一寨辩、第九天 我趴在偏房一處隱蔽的房頂上張望吓懈。 院中可真熱鬧,春花似錦靡狞、人聲如沸耻警。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)榕栏。三九已至,卻和暖如春蕾各,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背庆揪。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工式曲, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人缸榛。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓吝羞,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親内颗。 傳聞我的和親對(duì)象是個(gè)殘疾皇子钧排,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345