併發:concurrency
並行:parallelise
併發是指同時處理很多事情(同時的概念是一種假象,實際上事情還是存在這時間片段上的先後順序,只不過時間間隔很小,以至於人無法分辨)
並行是指同時執行很多事情。這是一種利用空間換取時間的方法,通過多核的空間拓展,來實現多任務同時執行。
摘取一段網上形象的比喻:
你吃飯吃到一半,電話來了,你一直到吃完了以後纔去接,這就說明你不支持併發也不支持並行。
你吃飯吃到一半,電話來了,你停了下來接了電話,接完後繼續吃飯,這說明你支持併發。
你吃飯吃到一半,電話來了,你一邊打電話一邊吃飯,這說明你支持並行。
這段話也可以用一張圖來表示:
上面的就是並行,下面是併發,我們可以看到在並行中,任務是獨佔線程的,而在併發中,多個任務是在搶佔線程以實現。