基础知识总结:线程安全的集合与线程不安全的集合
2017-11-14 10:18
399 查看
集合大概有4种类型:List Set Queue Map
其中Vector、HashTable、Properties是线程安全的。其中ArrayList、LinkedList、HashSet、TreeSet、HashMap、TreeMap等都是线程不安全的。(线程不安全是指:当多个线程访问同一个集合或Map时,如果有超过一个线程修改了ArrayList集合,则程序必须手动保证该集合的同步性。)
当多个并发同时对非线程安全的集合进行增删改的时候会破坏这些集合的数据完整性
Collections提供的类方法把这些集合包装成线程安全的集合。Collections提供了如下几个静态方法。
<T> Collection<T> synchronizedCollection(Collection<T> c): 返回指定collection 对应的线程安全的collection。
static <T> List<T> synchronizedList(List<T> list): 返回指定List对象对应的线程安全的List 对象。
static <K, V> Map<K, V> synchronizedMap(Map<K, V> m): 返回指定Map对象对应的线程安全的Map对象。
static <T> Set<T> synchronizedSet(Set<T> s): 返回指定Set对象对应的线程安全的Set对象。
static <K, V> SortedMap<K, V> synchronizedSortedMap(SortedMap<K, V> m): 返回指定SortedMap对象对应的线程安全的SortedMap对象。
static <T> SortedSet<T> synchronizedSortedSet(SortedSet<T> s): 返回指定SortedSet对象对应的线程安全的SortedSet对象。
另外java.util.concurrent 包下提供了大量支持高效并发访问的集合接口和实现类:
以Concurrent 开头的集合类,如ConcurrentHashMap、ConcurrentSkipListMap、ConcurrentSkipListSet、ConcurrentLinkedQueue 和 ConcurrentLinkedDeque。
以CopyOnWrite 开头的集合类,如CopyOnWriteArrayList、CopyOnWriteArraySet。
其中Vector、HashTable、Properties是线程安全的。其中ArrayList、LinkedList、HashSet、TreeSet、HashMap、TreeMap等都是线程不安全的。(线程不安全是指:当多个线程访问同一个集合或Map时,如果有超过一个线程修改了ArrayList集合,则程序必须手动保证该集合的同步性。)
当多个并发同时对非线程安全的集合进行增删改的时候会破坏这些集合的数据完整性
Collections提供的类方法把这些集合包装成线程安全的集合。Collections提供了如下几个静态方法。
<T> Collection<T> synchronizedCollection(Collection<T> c): 返回指定collection 对应的线程安全的collection。
static <T> List<T> synchronizedList(List<T> list): 返回指定List对象对应的线程安全的List 对象。
static <K, V> Map<K, V> synchronizedMap(Map<K, V> m): 返回指定Map对象对应的线程安全的Map对象。
static <T> Set<T> synchronizedSet(Set<T> s): 返回指定Set对象对应的线程安全的Set对象。
static <K, V> SortedMap<K, V> synchronizedSortedMap(SortedMap<K, V> m): 返回指定SortedMap对象对应的线程安全的SortedMap对象。
static <T> SortedSet<T> synchronizedSortedSet(SortedSet<T> s): 返回指定SortedSet对象对应的线程安全的SortedSet对象。
另外java.util.concurrent 包下提供了大量支持高效并发访问的集合接口和实现类:
以Concurrent 开头的集合类,如ConcurrentHashMap、ConcurrentSkipListMap、ConcurrentSkipListSet、ConcurrentLinkedQueue 和 ConcurrentLinkedDeque。
以CopyOnWrite 开头的集合类,如CopyOnWriteArrayList、CopyOnWriteArraySet。
相关文章推荐
- Java基础知识强化之集合框架笔记74:各种集合常见功能 和 遍历方式总结
- 黑马程序员学习log第五篇基础知识:JAVA的面向对象之集合总结
- 黑马程序员——基础知识总结_集合框架1
- WIN32线程的基础知识 总结
- C#高级语法基础知识总结7——线程
- 【Java基础总结】-了解Java线程调度、并发安全及锁优化
- java基础知识—java集合总结
- Java基础知识总结(五)——安全
- Java多线程编程总结笔记——一多线程基础知识
- Java基础知识总结:集合与泛型(上)
- 集合框架总结(基础知识)
- Java基础知识强化之集合框架笔记80:HashMap的线程不安全性的体现
- 基础知识总结:常用容器集合类的算法谈
- 【Java基础总结】-集合与线程实现
- 黑马程序员_JavaSE基础知识总结二十:课堂上关于集合的几个超经典案例(结课前集合知识温故)
- 多核计算与程序设计 - 03 基础知识 之三 线程的安全退出
- Java基础知识总结:集合与泛型(下)