this 逃逸)| 類別 | 代表 | 特點 |
|---|---|---|
| 同步容器 | Vector、Hashtable、Collections.synchronizedXxx | 全鎖串行,吞吐低 |
| 並發容器 | ConcurrentHashMap、CopyOnWriteArrayList、ConcurrentLinkedQueue、BlockingQueue | 分段鎖/CAS/複製於寫,高併發吞吐 |
ConcurrentModificationException,可容忍遍歷時的修改size()、isEmpty() 為近似值,非實時精確讀多寫少、遍歷頻繁、容忍數據短暫不一致(如事件監聽器列表)。
BlockingQueue 實現解耦,put/take 可阻塞InterruptedException ⇒ 可阻塞方法Thread.currentThread().interrupt())| 同步器 | 核心語義 | 典型場景 |
|---|---|---|
| Latch (CountDownLatch) | 一次性開關,等待多個條件就緒 | 資源初始化完成、多服務啟動同步 |
| Semaphore | 許可證計數,控制並發訪問量 | 資源池、連接池邊界控制 |
| Barrier (CyclicBarrier) | 所有線程集合點,全到才繼續,可復用 | 多階段計算同步、選舉領導者 |
FutureTask 實現 RunnableFuture,可作為 Latch 使用:get() 阻塞直到計算完成。Executor 框架以此實現異步任務提交與結果獲取。
一種特殊 Barrier,兩線程在交換點交換數據,適用流水線傳遞、基因演算法等場景。