執行緒安全的集合

預設情況下,各種 Collection 型別不是執行緒安全的。

但是,使集合執行緒安全相當容易。

List<String> threadSafeList = Collections.synchronizedList(new ArrayList<String>());
Set<String> threadSafeSet = Collections.synchronizedSet(new HashSet<String>());
Map<String, String> threadSafeMap = Collections.synchronizedMap(new HashMap<String, String>());

當你建立一個執行緒安全的集合時,你永遠不應該通過原始集合訪問它,只能通過執行緒安全的包裝器。

Version >= Java SE 5

從 Java 5 開始,java.util.collections 有幾個新的執行緒安全集合,不需要各種 Collections.synchronized 方法。

List<String> threadSafeList = new CopyOnWriteArrayList<String>();
Set<String> threadSafeSet = new ConcurrentHashSet<String>();
Map<String, String> threadSafeMap = new ConcurrentHashMap<String, String>();