“arraylist(二)”

ArrayList(二)

ArrayList是线程不安全的

现象

java.util.ConcurrentModificationException

不安全原因

  • add方法没有加锁 ->并发争夺修改导致。

解决方案

  • Vector
  • Collections.synchronizedList(new ArrayList<>()); –> 同步锁
  • new CopyOnWriteArrayList<>();
    • 读写分离的思想;
      • 加锁 ->copy -> 扩容 + 1 -> 传递引用
  • new ConcurrentHashMap<>();