網頁

2017/9/20

Java 平行(Parallelism)與併行(Concurrency)的差別

平行(Parallelism)與併行(Concurrency)的差別如下。

  • 多個任務分配到一個CPU核心,在取得的CPU時間片段中交互執行,稱之為併行(Concurrency)。
  • 一個任務可被分成多個子任務並分配到不同的CPU核心同時執行,稱之為平行(Parallelism)。

Concurrency是指多個任務(tasks)同時處理。而併行的相反則為序列化處理,也就是要等一件任務完成才能開始執行另外一件任務。

Parallelism是指一個任務分拆為數個子任務來同時執行。

平行和併行是分別獨立的概念,彼此並沒有依賴關係,有平行不一定有併行,反之亦然。

下面這張圖說明了Parallelism與Concurrency的不同。


而下面這張圖代表系統同時支援平行與併行(我自己的理解:p)。


沒有留言:

張貼留言