每日學點:多線程下CopyOnWrite容器原理及優缺點分析

一、什麼是CopyOnWrite容器

CopyOnWrite容器即寫時複製的容器。通俗的理解是當我們往一個容器添加元素的時候,不直接往當前容器添加,而是先將當前容器進行Copy,複製出一個新的容器,然後新的容器裡添加元素,添加完元素之後,再將原容器的引用指向新的容器。這樣做的好處是我們可以對CopyOnWrite容器進行併發的讀,而不需要加鎖,因為當前容器不會添加任何元素。所以CopyOnWrite容器也是一種讀寫分離的思想,讀和寫不同的容器。

二、CopyOnWriteArrayList的實現原理

每日學點:多線程下CopyOnWrite容器原理及優缺點分析

讀的時候不需要加鎖,如果讀的時候有多個線程正在向ArrayList添加數據,讀還是會讀到舊的數據,因為寫的時候不會鎖住舊的ArrayList。

三、CopyOnWrite的應用場景

每日學點:多線程下CopyOnWrite容器原理及優缺點分析

四、CopyOnWrite的缺點

CopyOnWrite容器有很多優點,但是同時也存在兩個問題,即內存佔用問題和數據一致性問題。所以在開發的時候需要注意一下。

每日學點:多線程下CopyOnWrite容器原理及優缺點分析


每日學點:多線程下CopyOnWrite容器原理及優缺點分析


分享到:


相關文章: