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

冒號與他的學生們(八):併發範式——在競爭中合作

     編輯:Java 相關知識

「在合作中競爭,在競爭中合作」——這是併發範式的核心寫照。冒號老師以「燒水泡茶」為例,生動對比串行與併發思維:

  • 方案一(串行):洗杯 → 放茶 → 灌水 → 燒水 → 泡茶
  • 方案二(併發):灌水燒水 同時 洗杯放茶 → 水開泡茶

方案二明顯更優,但冒號指出:單靠併發 API 不保證效率,必須重新設計任務分解與依賴關係。

併發範式的設計目標

  1. 軟體易重用、維護、測試
  2. 公平高效利用資源,優化吞吐量/回應時間
  3. 保障執行緒安全,避免競態條件
  4. 保持活性,避免死鎖、飢餓、活鎖、資源耗盡
  5. 減少鎖開銷、上下文切換損耗
  6. 妥善處理多執行緒帶來的演算法與除錯複雜度

語言支援現狀

  • Java / C#:語法層面支援(synchronized, lock, volatile, concurrent 套件)
  • C / C++:僅 volatile 關鍵字,主要仰賴庫(pthreads, TBB, C++11 <thread>)
  • 學術語言:Erlang(行程導向、訊息傳遞、無共享記憶體)是商業應用少見的成功案例

併發 vs 物件:正交且互補

維度併發範式物件範式
基本單位Process/Thread(任務)Object(服務)
核心主題資源競爭與合作封裝、繼承、多態、服務
溝通方式共享記憶體、訊息傳遞、同步原語方法呼叫、介面契約
隱喻產品型公司:工人執行單一任務服務型公司:服務員提供系列服務

冒號總結:「優秀的程式設計師也是優秀的管理者。」

五大範式一覽

  • 過程式:君主體系,模組授命/聽命
  • 函數式:數學體系,模組替換/合成
  • 邏輯式:邏輯體系,模組歸納/演繹
  • 物件式:民主體系,模組交流/服務
  • 併發式:生產體系,模組競爭/合作

併發範式要求擺脫「按部就班」的線性思維,擁抱「百舸爭流」的並行世界——不進則退。

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