1.并發:
指同一時間點可能有多個線程同時做同一件事情,例如搶票,商品秒殺等(多個線程會同時操作庫存這個資源),這種情況下需要考慮被搶占的資源的安全性問題,即線程安全問題。(多個線程對應同一個資源)
2.并行:
指同一時間點可能有多個線程同時做不同僚情,比如檔案壓縮等(把整個檔案按容量平分為4份,4個線程分别壓縮其中一份,都處理完成後再彙總成一個壓縮檔案),各個線程所需要的資源并不相同,是以不會造成線程安全問題。(多個線程對應不同資源)
3.串行:
指同一時間點隻有單個線程做一件事情,例如我們對某一個資源加鎖後,并發環境下對這個資源的操作就相當于時串行執行了,因為同一個時間點内隻有一個線程能獲得資源的鎖,其他的線程隻能等待,悲觀鎖解決線程安全問題的思路就是把一個并發問題轉換成一個串行的問題。(單個線程對應同一個資源)
4.注意點:
不同的線程并不等同于不同的CPU核心,這點不要混淆!