通過在所有公共方法上加 synchronized 實現線程安全,並發性能極差。
Vector、Stack、Hashtable。Collections.synchronizedList()、synchronizedMap() 等工廠方法創建的類。缺陷:迭代時並非線程安全,需手動同步鎖定整個容器,嚴重限制並發吞吐量。
針對並發場景設計,性能大幅提升。
| 容器 | 特點 | 適用場景 |
|---|---|---|
| ConcurrentHashMap | 分段鎖(Segment)+ CAS,寫操作僅鎖定段,讀無鎖 | 高並發 Map,替代 Hashtable/synchronizedMap |
| CopyOnWriteArrayList | 寫時復制新數組,讀無鎖,最終一致性(非實時) | 讀多寫少列表,如事件監聽器列表 |
| ConcurrentLinkedQueue | 無鎖鏈表隊列,CAS 實現 | 高並發生產者-消費者隊列 |
| BlockingQueue | 阻塞隊列,支持生產者消費者模式 | 線程池任務隊列、生產消費模型 |
| PriorityQueue | 非線程安全,優先級隊列 | 單線程或外部同步環境 |