一、线程安全的集合
1、阻塞队列
LinkedBlockingQueue等等
2、java.util.concurrent包中:ConcurrentHashMap、ConcurrentSkipListMap、ConcurrentSkipSet、ConcurrentLinkedQueue
3、写数组的拷贝
CopyOnWriteArrayList和CopyOnWriteArraySet
4、早期的线程安全集合(弃用,不推荐)
Vector、Hashtable
(Vector被ArrayList取代,Hashtable被HashMap取代)
二、线程不安全的集合变安全
同步包装器:使用锁加以保护,提供了线程的安全访问。
举例:
List<E> myList = Collections.synchronizedList(new ArrayList<E>());
Map<K, V> myMap = Collections.sysnchronizedMap(new HashMap<K, V>());
三、最佳实践
最好使用java.util.concurrent包中的集合,不使用同步包装器