一文讀懂并發(fā)與并行

一文讀懂并發(fā)與并行

作者: 雅各布·詹科夫
原文: http://tutorials.jenkov.com/java-concurrency/concurrency-vs-parallelism.html
翻譯: 潘深練的個人網(wǎng)站 如您有更好的翻譯版本斥滤,歡迎 ?? 提交 issue 或投稿哦~
更新: 2022-02-23

并發(fā)性和并行性通常用于與多線程程序相關(guān)的将鸵,最早并發(fā)性和并行性似乎指的是相同的概念,但其實并發(fā)和并行實際上有不同的含義佑颇。在這個并發(fā)與并行教程中顶掉,我將解釋這些概念的含義。

為了清楚起見挑胸,在本文中一喘,我討論在單個應(yīng)用程序(單個進程)中的并發(fā)性和并行性。不在多個應(yīng)用程序嗜暴、進程或計算機之間凸克。

并發(fā)與并行教程視頻

如果您喜歡視頻,這里有本教程對應(yīng)的視頻版本: 并發(fā)與并行教程視頻

并發(fā)與并行教程視頻

什么是并發(fā)

并發(fā)是指在一個應(yīng)用程序中同時存在多個任務(wù)在執(zhí)行闷沥,同時刻或者說看起來是同一時刻(并發(fā))萎战。

如果計算機只有一個CPU,應(yīng)用程序可能不會在同一時間完成多個任務(wù)舆逃,但在應(yīng)用程序內(nèi)部一次完成多個任務(wù)蚂维。要同時在多個任務(wù)上取得進展,CPU會在執(zhí)行期間在不同的任務(wù)之間切換路狮。如下圖所示:

并發(fā)

什么是并行執(zhí)行

并行執(zhí)行是指計算機具有多個 CPU 或 CPU 內(nèi)核虫啥,并同時在多個任務(wù)上取得進展。但是奄妨,并行執(zhí)行并不是指與并行性相同的現(xiàn)象 涂籽。稍后我將回到并行性。并行執(zhí)行如下圖所示:

并行執(zhí)行

并行并發(fā)執(zhí)行

可以進行并行并發(fā)執(zhí)行砸抛,其中線程分布在多個 CPU 中评雌。因此,在同一個 CPU 上執(zhí)行的線程是并發(fā)執(zhí)行的直焙,而在不同 CPU 上執(zhí)行的線程是并行執(zhí)行的景东。下圖說明了并行并發(fā)執(zhí)行。

并行并發(fā)執(zhí)行

理解并行性

并行性意味著一個應(yīng)用程序?qū)⑵淙蝿?wù)拆分成更小的子任務(wù)奔誓,這些子任務(wù)可以并行處理斤吐,例如在多個CPU上同時處理。因此厨喂,并行性并不是指與并行執(zhí)行相同的執(zhí)行模型和措,即使它們表面上看起來很相似。

為了實現(xiàn)真正的并行性杯聚,您的應(yīng)用程序必須運行多個線程臼婆,每個線程必須在單獨的 CPU/CPU 內(nèi)核/顯卡 GPU 內(nèi)核或類似內(nèi)核上運行。

下圖顯示了一個更大的任務(wù)幌绍,它被分為4個子任務(wù)颁褂。這4個子任務(wù)由4個不同的線程執(zhí)行,它們運行在2個不同的CPU上傀广。這意味著颁独,這些子任務(wù)的部分是并行執(zhí)行的(在同一CPU上執(zhí)行的),而部分是并行執(zhí)行的(在不同CPU上執(zhí)行的)伪冰。

理解并行性

如果這4個子任務(wù)由4個線程在各自的CPU上執(zhí)行(總共4個CPU)誓酒,那么任務(wù)的執(zhí)行將是完全并行的。然而,要將一個任務(wù)分解成與可用CPU數(shù)量一樣多的子任務(wù)并不總是那么容易靠柑。通常寨辩,將一個任務(wù)分解為多個子任務(wù)更容易,這些子任務(wù)與手頭的任務(wù)自然匹配歼冰,然后讓線程調(diào)度器負責在可用CPU之間分配線程靡狞。

并發(fā)和并行組合

綜上所述,并發(fā)性指的是多個任務(wù)在單個CPU上看似同時取得進展隔嫡。

另一方面甸怕,并行性與應(yīng)用程序如何并行執(zhí)行單個任務(wù)有關(guān),通常是通過將任務(wù)拆分為可以并行完成的子任務(wù)腮恩。

這兩種執(zhí)行方式可以在同一個應(yīng)用程序中組合梢杭。我將在下面介紹其中一些組合。

并發(fā)秸滴,非并行

應(yīng)用程序可以是并發(fā)的武契,但不能是并行的。這意味著它似乎同時(同時)在多個任務(wù)上取得進展缸榛,但應(yīng)用程序會在每個任務(wù)上取得進展之間切換吝羞,直到任務(wù)完成。在并行線程/CPU中沒有真正的任務(wù)并行執(zhí)行内颗。

并行钧排,不并發(fā)

應(yīng)用程序也可以是并行的,但不能是并發(fā)的均澳。這意味著應(yīng)用程序一次只能處理一個任務(wù)恨溜,而這個任務(wù)被分解成可以并行處理的子任務(wù)。但是找前,每個任務(wù)(+子任務(wù))都是在下一個任務(wù)被拆分并并行執(zhí)行之前完成的糟袁。

既不并發(fā)也不并行

此外,應(yīng)用程序既不能是并發(fā)的躺盛,也不能是并行的项戴。這意味著它一次只能處理一個任務(wù),而且任務(wù)永遠不會分解為并行執(zhí)行的子任務(wù)槽惫。小型命令行應(yīng)用程序可能就是這種情況周叮,因為它只有一個作業(yè),太小了界斜,無法并行化适掰。

并發(fā)且并行

最后结窘,應(yīng)用程序還可以通過兩種方式同時并發(fā)和并行:

第一種是簡單的并行執(zhí)行恭金。如果應(yīng)用程序啟動多個線程鳞仙,然后在多個CPU上執(zhí)行,就會發(fā)生這種情況。

第二種方式是應(yīng)用程序同時處理多個任務(wù)开缎,并將每個任務(wù)分解為子任務(wù)棕叫,同時以并行的方式執(zhí)行。但是在這種情況下啥箭,并發(fā)和并行的一些性能優(yōu)勢可能會丟失谍珊,因為計算機中的 CPU 基于在頻繁于并發(fā)或并行處理。所以并發(fā)且并行急侥,可能只會帶來微小的性能提升甚至可能是性能損失。因此侮邀,除非有特殊目的并且已經(jīng)提前進行了充分分析和測量坏怪,否則不建議采用并發(fā)并行模型。

(本篇完)

作者: 雅各布·詹科夫
原文: http://tutorials.jenkov.com/java-concurrency/concurrency-vs-parallelism.html
翻譯: 潘深練的個人網(wǎng)站 如您有更好的翻譯版本绊茧,歡迎 ?? 提交 issue 或投稿哦~
更新: 2022-02-23

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末铝宵,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子华畏,更是在濱河造成了極大的恐慌鹏秋,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,000評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件亡笑,死亡現(xiàn)場離奇詭異侣夷,居然都是意外死亡,警方通過查閱死者的電腦和手機仑乌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評論 3 399
  • 文/潘曉璐 我一進店門百拓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人晰甚,你說我怎么就攤上這事衙传。” “怎么了厕九?”我有些...
    開封第一講書人閱讀 168,561評論 0 360
  • 文/不壞的土叔 我叫張陵蓖捶,是天一觀的道長。 經(jīng)常有香客問我扁远,道長俊鱼,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,782評論 1 298
  • 正文 為了忘掉前任穿香,我火速辦了婚禮亭引,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘皮获。我一直安慰自己焙蚓,他們只是感情好,可當我...
    茶點故事閱讀 68,798評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著购公,像睡著了一般萌京。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上宏浩,一...
    開封第一講書人閱讀 52,394評論 1 310
  • 那天知残,我揣著相機與錄音,去河邊找鬼比庄。 笑死求妹,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的佳窑。 我是一名探鬼主播制恍,決...
    沈念sama閱讀 40,952評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼神凑!你這毒婦竟也來了净神?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,852評論 0 276
  • 序言:老撾萬榮一對情侶失蹤溉委,失蹤者是張志新(化名)和其女友劉穎鹃唯,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體瓣喊,經(jīng)...
    沈念sama閱讀 46,409評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡坡慌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,483評論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了型宝。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片八匠。...
    茶點故事閱讀 40,615評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖趴酣,靈堂內(nèi)的尸體忽然破棺而出梨树,到底是詐尸還是另有隱情,我是刑警寧澤岖寞,帶...
    沈念sama閱讀 36,303評論 5 350
  • 正文 年R本政府宣布抡四,位于F島的核電站,受9級特大地震影響仗谆,放射性物質(zhì)發(fā)生泄漏指巡。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,979評論 3 334
  • 文/蒙蒙 一隶垮、第九天 我趴在偏房一處隱蔽的房頂上張望藻雪。 院中可真熱鬧,春花似錦狸吞、人聲如沸勉耀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽便斥。三九已至至壤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間枢纠,已是汗流浹背像街。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留晋渺,地道東北人镰绎。 一個月前我還...
    沈念sama閱讀 49,041評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像些举,于是被迫代替她去往敵國和親跟狱。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,630評論 2 359

推薦閱讀更多精彩內(nèi)容