Java中哪些集合是线程安全的

Java中哪些集合是线程安全的

 
  1. java.util.Collection是一个集合接口,Collection接口在java中的具体实现有很多,
其中ArrayList、LinkedList、HashSet、TreeSet、HashMap、TreeMap等都是线程不安全的。Vector、HashTable是线程安全的。
  1. Collections是集合类的一个工具类,它提供了一系列静态方法,用于对集合中元素进行排序,搜索以及线程安全等各种操作
          其中将集合包装成安全集合的静态方法有:
  1. &t;T> Collection synchronizedCollection(Collection c): 返回指定colection 对应的线程安全的colection。
  2. static &t;T> List synchronizedList(List list): 返回指定List对象对应的线程安全的List 对象。
  3. static &t;K, V> Map synchronizedMap(Map m): 返回指定Map对象对应的线程安全的Map对象。
  4. static &t;T> Set synchronizedSet(Set s): 返回指定Set对象对应的线程安全的Set对象。
  5. static &t;K, V> SortedMap synchronizedSortedMap(SortedMap m): 返回指定SortedMap对象对应的线程安全的SortedMap对象。
  6. static &t;T> SortedSet synchronizedSortedSet(SortedSet s): 返回指定SortedSet对象对应的线程安全的SortedSet对象。
 
  1. 上诉提到的线程安全都属于同步类容器,其底层的机制无非是用synchronized关键字对每个公用的方法都进行同步,他们虽然实现了线程安全,但是降低了并发性,在多线程环境时,严重降低了应用程序的吞吐量。jdk5.0以后提供了多种并发容器来替代同步类容器从而改善性能,如:

 

  1. ConcurrentHashMap,ConcurrentSkipListMap,ConcurrentSkipListSet,ConcurrentLinkedQueue和ConcurrentLinkedDeque等
  1. 以CopyOnWrite开头的集合类,如CopyOnWriteArrayList,CopyOnWriteArraySet等

你可能感兴趣的:(java并发编程)