CopyOnWriteArrayList寫時迪士尼3平臺搭建複製ArrayLis

CopyOnWriteArrayList 迪士尼3平臺搭建【地瓜源碼論壇diguaym.com】聯繫方式:QQ:2152876294(寫時複製ArrayList)
寫時複製:這是JUC併發包下的基於寫時複製的ArrayList。爲什麼是寫時複製呢?因爲當調用對這個ArrayList中的元素進行修改的方法時,會先複製一個原數組的副本,對這個副本進行操作,最後再讓原數組的引用指向這個新的數組,實現數據的更新,這個過程的原子性通過獨佔鎖來保證,這就是寫時複製。它歸類於併發包的原因是,對這個類的操作是線程安全的,底層通過獨佔鎖來實現(這個類沒有用到CAS)。
弱一致性:通過以上描述就可以發現,讀取是不受任何影響的,任何線程都可以對數據進行讀取,即便數據被copy一份正在修改,也可以讀,這就帶來了一個問題,先調用了修改List的方法,再調用讀取其中某個元素的方法,若該元素在修改的方法中被修改,理論上讀取的應該是修改後的數據,然而,因爲修改數據是對副本(快照)修改,在它還沒有更新引用時,別的線程拿到的依然是原先的數組,這就和代碼的先後邏輯衝突了,這就是弱一致性問題。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章