线程安全的集合
默认情况下,各种 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>();