CopyOnWriteArrayList(免鎖容器)的好處之一是當多個迭代器同時遍歷和修改這
個列表時,不會拋出 ConcurrentModificationException。在
CopyOnWriteArrayList 中,寫入將導致創建整個底層數組的副本,而源數組將保
留在原地,使得復制的數組在被修改時,讀取操作可以安全地執行。
1、由於寫操作的時候,需要拷貝數組,會消耗內存,如果原數組的內容比較多的
情況下,可能導致 young gc 或者 full gc;
2、不能用於實時讀的場景,像拷貝數組、新增元素都需要時間,所以調用一個 set
操作后,讀取到數據可能還是舊的,雖然 CopyOnWriteArrayList 能做到最終一致
性,但是還是沒法滿足實時性要求;
CopyOnWriteArrayList 透露的思想
1、讀寫分離,讀和寫分開
2、最終一致性
3、使用另外開辟空間的思路,來解決並發沖突