线程不安全问题
集合类不安全 ArrayList
1.故障现象
java.util.ConcurrentModificationException
2.导致原因
并发争抢修改导致
3.解决方案
3.1 new Vector<>()
3.2 Collections.synchronizedList(new ArrayList<>());
3.3 new CopyOnWriteArrayList<>();
CopyOnWriteArraySet 也可以。但底层 实质 就是 CopyOnWriteArrayList
集合类不安全 HashSet
HashSet() 底层实质就是 HashMap<>()
但是HashSet在Set值时只需要添加一个值?Map不应该是键值对,两个值嘛?
原因:::底层源码中,实际的Value是一个Object类型的PRESENT的常量。
CopyOnWriteHashSet
Collections.synchronizedSet()
集合类不安全 Map
ConcurrentHashMap
collections.synchronizedMap()