集合类不安全之并发修改异常:java.util.ConcurrentModificationException,高并发多线程访问下的常见异常

ArrayList线程不安全的原因是其中的add方法没有加锁

  1. 故障现象:java.util.ConcurrentModificationException
  2. 导致原因:并发争抢修改导致,参考花名册签名情况,一个人正在写,另一个同学过来抢夺,导致数据不一致异常。并发修改异常。
  3. 解决方案:
    1. 用Vector
    2.  Collections.synchronizedList(new ArrayList<>();
    3.  new CopyOnWriteArrayList<>();

集合类不安全之并发修改异常:java.util.ConcurrentModificationException,高并发多线程访问下的常见异常

 

 

Set线程不安全问题

       解决方案:

    1.   Collections.synchronizedSet(new ArraySet<>();
    2.  new CopyOnWriteArraySet<>();

HashSet底层数据结构Hash Map,但是Set中填一个值Map中填两个值原因是HashSet的add方法调用HashMap的put方法,但是add方法中添加的值是put中的K,V是一个PRECENT常量

Map线程不安全问题:

       解决方案:

5.1   Collections.synchronizedSet(new HashMap<>();

         5.2 new CopyOnWriteHashMap<>();