首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

併發、並行、同步、異步、多線程核心概念辨析

     編輯:Java 綜合教學

名詞定義

  1. 併發:單位時間內多個程序在同一 CPU上處於「已啟動到運行完畢」之間。包含同步與互斥關係。
  2. 互斥:進程搶佔臨界資源,同一時刻僅一個進程可用。
  3. 同步:進程間相互依賴,前一個輸出是後一個輸入;無輸出則等待。
  4. 偽併發 vs 真併發:單核分時複用為偽併發;多核同時執行為真併發。
  5. 並行:多處理器上多任務同時執行。並行必併發,併發不必並行。
  6. 多線程:程式設計邏輯層概念,進程內並發執行的代碼片段,可實現切換執行。
  7. 異步:調用者不等待被調用者完成,繼續執行後續邏輯。多線程是實現異步的手段之一(亦可用多進程、事件循環等)。

生活化例子:燒水、舉鐵、洗衣

任務步驟與耗時
燒水準備1分 → 等待8分 → 關火1分
舉鐵100下持續10分(CPU 密集)
洗衣準備1分 → 等待5分 → 關機1分

單核同步:27 分鐘

依序執行,等待期間 CPU 空轉。

單核異步(多線程模擬):14 分鐘

利用等待間隙切換任務:
準備燒水(1) + 準備洗衣(1) + 舉鐵50下(5) + 關洗衣機(1) + 舉鐵20下(2) + 關燒水機(1) + 舉鐵30下(3) = 14 分鐘。

雙核異步並行:10 分鐘

  • 核心1:準備燒水(1) + 舉鐵50下(5) + 等待3 + 關火(1)
  • 核心2:準備洗衣(1) + 舉鐵50下(5) + 關洗衣機(1) + 等待3

真正同時執行,總耗時取決於最長鏈路。

關鍵洞見

  • 同步 vs 異步:I/O 等待時,同步阻塞浪費 CPU;異步切走做別事。
  • CPU 密集任務(如舉鐵)在單核下,多線程無優勢(甚至因切換開銷變慢)。
  • 多線程 ≠ 異步:多線程是實現異步的常用手段,但寫正確的異步代碼比多線程難;多線程本質仍是同步執行,靠 OS 調度實現「準異步」。
  • 多核才是質變:只有多核才能真正並行,突破單核時間片輪轉的物理極限。

理解這些概念邊界,是寫出高效併發程式的基石。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved