默认情况下,各种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>());
在创建线程安全的集合时,决不能通过原始集合访问它,只能通过线程安全包装器访问它。
从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>();