每日学点:多线程下CopyOnWrite容器原理及优缺点分析

一、什么是CopyOnWrite容器

CopyOnWrite容器即写时复制的容器。通俗的理解是当我们往一个容器添加元素的时候,不直接往当前容器添加,而是先将当前容器进行Copy,复制出一个新的容器,然后新的容器里添加元素,添加完元素之后,再将原容器的引用指向新的容器。这样做的好处是我们可以对CopyOnWrite容器进行并发的读,而不需要加锁,因为当前容器不会添加任何元素。所以CopyOnWrite容器也是一种读写分离的思想,读和写不同的容器。

二、CopyOnWriteArrayList的实现原理

每日学点:多线程下CopyOnWrite容器原理及优缺点分析

读的时候不需要加锁,如果读的时候有多个线程正在向ArrayList添加数据,读还是会读到旧的数据,因为写的时候不会锁住旧的ArrayList。

三、CopyOnWrite的应用场景

每日学点:多线程下CopyOnWrite容器原理及优缺点分析

四、CopyOnWrite的缺点

CopyOnWrite容器有很多优点,但是同时也存在两个问题,即内存占用问题和数据一致性问题。所以在开发的时候需要注意一下。

每日学点:多线程下CopyOnWrite容器原理及优缺点分析


每日学点:多线程下CopyOnWrite容器原理及优缺点分析


分享到:


相關文章: