快速查閱:常用集合與字串類的線程安全特性及對應替代方案。
| 非線程安全類 | 線程安全對應類 | 備註 |
|---|---|---|
| ArrayList | Vector / Collections.synchronizedList() / CopyOnWriteArrayList | Vector 所有方法 synchronized;CopyOnWriteArrayList 讀多寫少首選 |
| HashMap | Hashtable / Collections.synchronizedMap() / ConcurrentHashMap | ConcurrentHashMap (JDK8 CAS+synchronized) 高併發首選 |
| HashSet | Collections.synchronizedSet() / CopyOnWriteArraySet | 底層依賴 Map 實現 |
| StringBuilder | StringBuffer | StringBuffer 方法 synchronized;單執行緒用 StringBuilder |
| — | Properties | 繼承 Hashtable,天然線程安全 |
java.util.concurrent 類if (!map.containsKey(k)) map.put(k,v) 仍需額外同步或用 ConcurrentHashMap.putIfAbsentNode[] + CAS + synchronized (頭節點)size() 使用 LongAdder 統計,無需全表鎖定