並行和並發這個條目經常使用在有關於多執行緒程式中。但是並行和並發確切的含義是什麼呢?以及他們是相同的或什麼?
最簡單的回答是「不」。他們不是相同的詞條,雖然他們在表面上看起來非常相似。它也花了我一些時間去發現理解他們之間的差異。因此我決定在本教程中添加一篇關於他們的主題。
並發
並發意味著一個應用程式同時運行不只一個任務。如果電腦只有一個CPU,應用程式可能同時不會真正的運行超過一個程序,但是在應用的內部每次有不只一個程序被運行了。在它開始下一個之前,它不能完全的結束一個任務。
.
#並行
並行意味著應用程式將他的任務分成小的子任務,這些子任務可以並行的運行,例如在確定的同時的多個CPU上。
並發和並行的詳細比較
正如你所看到的,並發是一個應用如何處理多個任務。應用程式可以順序的執行任務或同時執行多個任務的同時執行。
並行換句話說,是關於一個應用如何處理一個單獨的任務。應用程式可能從開始到結束連續的執行這個任務,或者分離這個任務為多個子任務可以去並行的運行的。
如你所看到的,一個應用程式可以是並發的,但是不能並行的。這就意味著它同時執行超過一個任務,但是這個任務不能分開成子任務。
一個應用程式也可以是並行的而不是並發的。這就意味著這個應用程式同時執行一個任務,而這個任務被分離成多個子任務去並行的運行。
另外的,一個應用可以既不是並發的也不是並行的。這就意味著這個應用只是同時工作在一個任務上,而這個任務不會被分離成子任務。
最後,一個應用既可以是並發也可以是並行的,這樣的情況下,它可以同時既工作在多個任務上,也可以把每一個任務分離成多個子任務去並行的執行。然而,在這個場景中並發和並行的一些好處可能會丟失掉,因為在電腦中的CPU對於並發或並行已經保持相當的繁忙了。他們兩個組合使用可能會有一個小的性能提升或甚至是性能丟失。在你盲目的採用並發並行模型之前,你需要確認分析和測量好。
以上就是Java 並發對並行的詳細介紹的內容,更多相關內容請關注PHP中文網(m.sbmmt.com)!