06 CopyOnWriteArrayList是线程安全的吗

vvEcho 2024-01-20 14:08:36
Categories: Tags:

copyOnWriteArrayList是线程安全的
它采用了写时复制技术,简单表述就是往集合中添加元素时不会立刻往原数组中添加元素,而是将原数组拷贝一份,往新拷贝的数组中添加,做到读写分离;

并且它只针对写加锁,因为读不会改变原有的数组的数据,所以读不加锁,保证读的性能;

最后,待元素写入新数组后再把新数组执行原有的数组;它只保证了数据的最终一致性没有保证数据的实时一致性,因为数据在写入的过程中,读是不可见的;

实际的应用场景,一般用作读多写少对数据实时一致性要求不高的场景;比如留言板中,敏感词过滤等