Java 并發(fā)/多線程教程(六)-并發(fā)VS并行

? ? ? ?本系列譯自jakob jenkov的Java并發(fā)多線程教程,個人覺得很有收獲。由于個人水平有限,不對之處還望矯正!

? ? ? ? 在多線程線程編程中,我們經常提及并發(fā)和并行,但是并發(fā)和并行究竟是什么意思,他們所要表達是同一回事,還是不是同一加事。

? ? ? ?它們當然不是一回事,雖然表面上它們看起來非常的相似,但是它們是兩個不相同的術語。在此之前,我也花費了大量的時間去了解并發(fā)與并行的區(qū)別,因此我覺得在這里對比一下兩者。

并發(fā)

? ? ? ? 并發(fā)意味著一個應用在同一時刻處理多個任務。如果計算機只有一個CPU,那么應用程序不可能在同一時刻處理多個任務,但在應用內部,會有多個任務被處理,也就是說一個任務還沒有結束的時候另一個任務已經開始被處理。

并行

? ? ? ? ?并行意味著應用將任務劃分成多個小的子任務,去并行的執(zhí)行。

并發(fā)與并行詳細對比

? ? ? ? 正如你所看到的一樣。并發(fā)與應用程序如何處理多任務有關,應用程序可以在同一時刻處理一個任務(順序),也有可能在同一時刻處理多個任務(并發(fā))。并行,換句話來說就是,它與應用程序如何處理每個單獨的任務有關。應用程序可以從開始到結束連續(xù)處理,或是將任務劃分解成多個可以并行運行的子任務。如你所看到的,有些應用程序可以是并發(fā)但不是并行的,這就是說同一時刻可以處理多個任務,而這些任務不會分解成多個子任務。應用程序可以是并行的但不是并發(fā)的,這就是說同一時刻只有一個任務在執(zhí)行,任務被分解成多個子任務并行執(zhí)行。除此,一個應用程序可以既不是并行的,也不不并發(fā)的,這就是說,同一時刻只有一個任務執(zhí)行,而且這個任務絕對不會拆解成多個子任務去并行執(zhí)行。最后,一個應用程序可以是并行的也可以是并發(fā)的,這就是說同一時刻可以有多個任務并發(fā)執(zhí)行,同時每個任務又可以拆解成多個子任務并行的去執(zhí)行。然而,在這種情況下,并發(fā)和并行的優(yōu)點可能不復存在,因為計算機中CPU已經很繁忙的去處理并發(fā)和并行,他們二者的結合可能只會產生較小的性能提升或者甚至降低。因此在選擇并發(fā)并行模型時,請確保你的分析和度量。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 本系列譯自jakob jenkov的Java并發(fā)多線程教程(本章節(jié)部分內容參考http://ifeve.c...
    Steven_cao閱讀 1,061評論 1 10
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現,斷路器,智...
    卡卡羅2017閱讀 136,654評論 19 139
  • 從三月份找實習到現在,面了一些公司,掛了不少,但最終還是拿到小米、百度、阿里、京東、新浪、CVTE、樂視家的研發(fā)崗...
    時芥藍閱讀 42,819評論 11 349
  • 請客提前發(fā)菜單請定奪才叫有誠意
    Stan森閱讀 235評論 0 0
  • 2017年8月20日 今天是你走后的第100天,我剛剛習慣身旁沒有你的感受,可在這個家里,任何的物品都能讓我想起你...
    雪跡流殤閱讀 1,155評論 7 19

友情鏈接更多精彩內容