1. 程式人生 > >併發和並行的區別

併發和並行的區別

Erlang 之父 Joe Armstrong 用一張5歲小孩都能看懂的圖解釋了併發與並行的區別


併發是兩個佇列交替使用一臺咖啡機,並行是兩個佇列同時使用兩臺咖啡機。併發和並行都可以是多個執行緒,並行是多個執行緒在不同cpu上同時執行,而併發是不同執行緒在同個cpu上交替執行。所以在併發程式設計中,因為不同執行緒可以先後操作同一資料,所以,資料可見性和一致性尤其重要,在java中主要通過加鎖,synchronized關鍵字實現多個執行緒同步訪問資料。

可參考

併發是不同程式碼塊交替或同時執行的效能,而併發是不同程式碼塊同時執行的效能。