天天看點

Java CopyOnWriteArrayList

CopyOnWriteArrayList這是一個ArrayList的線程安全的變體

其原理大概可以通俗的了解為:初始化的時候隻有一個容器,很常一段時間,這個容器資料、數量等沒有發生變化的時候,大家(多個線程),

都是讀取(假設這段時間裡隻發生讀取的操作)同一個容器中的資料,

是以這樣大家讀到的資料都是唯一、一緻、安全的,但是後來有人往裡面增加了一個資料,

這個時候CopyOnWriteArrayList 底層實作添加的原理是先copy出一個容器(可以簡稱副本),再往新的容器裡添加這個新的資料,

最後把新的容器的引用位址指派給了之前那個舊的的容器位址,但是在添加這個資料的期間,其他線程如果要去讀取資料,仍然是讀取到舊的容器裡的資料。