CopyOnWriteArrayList的原理是什么?[面试5.0]?

当有数据写入的时候,将原有数据拷贝一份,然后在拷贝的这份数据中做写操作,写成功后再将原来的数组指向到新的数组,很多操作都是在锁的操作下进行的,避免多线程复制数据时复制了多份

CopyOnWriteArrayList的缺点:
元素过多可能会导致Full GC,因为是复制操作(慎用)
不能用于实时读的场景,因为复制,新增都需要时间,可能会读到旧数据,所以能,CopyOnWriteArrayList适用于读多写少的场景,因为只有写才加锁