1. 为什么需要 CopyOnWriteArrayList ArrayList 的内部实现是一个数组, 并且是动态扩容的, 当插入数据时, 先判断数组是否需要扩容, 如果需要扩容, 则先扩容, 再插入数据, 也就说插入由三步组成 1) 检查是否需要扩容 2) 扩容/不扩容 3) 数据加入到数组 代码如下 public boolean add(E e) { ensureCapacityInternal(size + 1); // Increments modCount!! elementData[…