6、Java並發性和多線程-並發性與並行性


以下內容轉自http://tutorials.jenkov.com/java-concurrency/concurrency-vs-parallelism.html(使用谷歌翻譯):

術語並發和並行性通常用於多線程程序。但是,並發和並行性究竟是什么意思呢,它們是相同的術語還是什么?

簡短的答案是“不”。它們不是相同的術語,盡管它們在表面上看起來非常相似。也花了我一些時間來終於找到並了解並發和並行性之間的區別。因此,我決定在這個Java並發教程中添加一個關於並發性與並行性的文本。

並發

並發意味着應用程序同時在多個任務上同時進行。那么如果計算機只有一個CPU,應用程序可能不會在同一時間在多個任務上進行進展 ,但是在應用程序內一次處理多個任務。在下一個開始之前,它不完全完成一項任務。

並行

並行性意味着應用程序將其任務分解成更小的子任務,可以並行處理,例如在多個CPU上同時進行處理。

並發性與並行性細節

正如你所看到的,並發性與應用程序如何處理它所處理的多個任務有關。應用程序可以在時間(順序)處理一個任務或同時處理多個任務(並發)。

另一方面,並​​行性與應用程序如何處理每個單獨的任務有關。應用程序可以從頭到尾連續地處理任務,或將任務分解成可以並行完成的子任務。

你可以看到,應用程序可以是並發的,但不是並行的。這意味着它同時處理多個任務,但任務不會分解為子任務。

應用程序也可以是並行的,但不是並發的。這意味着應用程序一次只能在一個任務上工作,並且該任務被分解成可並行處理的子任務。

另外,應用程序既可以並發也不能並行。這意味着它一次只能執行一個任務,並且任務不會被分解為並行執行的子任務。

最后,一個應用程序也可以並發和並行,因為它同時在多個任務上工作,並且還將每個任務分解成子任務並行執行。但是,在這種情況下,並發和並行性的一些好處可能會丟失,因為計算機中的CPU已經保持合並繁忙,並發或並行性。結合它可能只會導致小的性能增益甚至性能損失。在盲目采用並行並行模型之前,請確保分析和測量。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM