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

Java 併發編程核心知識點速查表:從發布逃逸到同步器

     編輯:Java 相關知識

對象發布與逃逸

  • 發布:對象引用對外部可見(公共靜態字段、非私有方法返回、發布內部類)
  • 逃逸:構造未完成時發布(構造器啟動線程導致 this 逃逸)
  • 安全發布:靜態初始化、volatile/final、鎖保護、線程安全容器

容器選型

類型實現核心特性
同步容器Vector、Hashtable、Collections.synchronizedXxx全鎖串行
並發容器ConcurrentHashMap、CopyOnWriteArrayList、ConcurrentLinkedQueue、BlockingQueue分段鎖/CAS/複製於寫,高吞吐
  • ConcurrentHashMap:弱一致性迭代器,size() 近似值
  • CopyOnWriteArrayList:寫時復制,讀多寫少首選
  • BlockingQueue:put/take 阻塞,生產者-消費者解耦

執行框架與任務竊取

  • Executor 框架實現生產者-消費者
  • SynchronousQueue:無緩衝直接移交
  • Fork/Join:雙端隊列 + 工作竊取,適用遞歸分治任務

中斷協議

  • 拋出 InterruptedException ⇒ 可阻塞方法
  • 處理:拋出向上傳播,或捕獲後 Thread.currentThread().interrupt() 恢復標誌

三大同步器

同步器語義典型場景
CountDownLatch一次性門閂,計數歸零開門資源初始化、多服務啟動同步
Semaphore許可證計數,控制並發度連接池、資源池邊界
CyclicBarrier循環柵欄,全員到齊放行,可復用多階段計算、選舉領導者

FutureTask 與 Exchanger

  • FutureTask 實現 RunnableFuture,可作 Latch 用 get() 等待結果
  • Exchanger:雙線程交換數據點,流水線/基因算法適用
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved