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

Java 核心類庫線程安全與非安全類對照表

     編輯:Java 綜合教學

Java 核心類庫線程安全與非安全類對照表

快速查閱:常用集合與字串類的線程安全特性及對應替代方案。

非線程安全類線程安全對應類備註
ArrayListVector / Collections.synchronizedList() / CopyOnWriteArrayListVector 所有方法 synchronized;CopyOnWriteArrayList 讀多寫少首選
HashMapHashtable / Collections.synchronizedMap() / ConcurrentHashMapConcurrentHashMap (JDK8 CAS+synchronized) 高併發首選
HashSetCollections.synchronizedSet() / CopyOnWriteArraySet底層依賴 Map 實現
StringBuilderStringBufferStringBuffer 方法 synchronized;單執行緒用 StringBuilder
—Properties繼承 Hashtable,天然線程安全

選型原則

  1. 單執行緒 / 區域變數:優先用非安全類 (ArrayList, HashMap, StringBuilder) — 效能最佳
  2. 多執行緒共享、讀多寫少:CopyOnWriteArrayList / CopyOnWriteArraySet
  3. 多執行緒共享、讀寫均衡或寫多:ConcurrentHashMap / ConcurrentLinkedQueue 等 java.util.concurrent 類
  4. 舊代碼維護:Vector / Hashtable / StringBuffer (僅為相容)
  5. 需複合操作原子性:即使用安全類,if (!map.containsKey(k)) map.put(k,v) 仍需額外同步或用 ConcurrentHashMap.putIfAbsent

補充:Java 8+ ConcurrentHashMap 關鍵優化

  • 放棄 Segment 分段鎖,採用 Node[] + CAS + synchronized (頭節點)
  • 擴容支援多執行緒協助 (transfer)
  • size() 使用 LongAdder 統計,無需全表鎖定
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved