1. arrayList线程是不安全的,在并发时,后插入的数据有可能会覆盖之前的插入的数据。
2. CopyOnWriteArrayList是线程安全的。所谓的线程安全主要是针对写操作。在进行写操作时,会进行加锁,防止并发写入数据丢失问题。
3. CopyOnWriteArrayList在执行添加操作时,首先是进行加锁操作,然后会将原数组元素复制出来,并去开辟一条新的数组,并对新数组进行扩容(+1),最后将原数组数据添加到新数组中,新添加的元素在追加到最后。
4. CopyOnWriteArrayList写操作是在新数组中,读操作是在原数组中,大大增加了操作性能。
5. CopyOnWriteArrayList是允许在写操作时去读取数据的,大大提高了读的性能,故适合读多写少的场景,但缺点是比较占内存,同时读取的数据可能不一定是实时最新的数据,所以不适合实时性要求很高的场景。