线程安全集合CopyOnWriteArrayList

解决多线程的集合有以下几种

1、Vertor(所有方法上加synchronized锁)能保证多线程安全,数据一致,但性能低下一般不用

2、Collections.synchronizedList 方法 返回的List  在方法内部加锁,线程安全,数据一致,性能有提升

3、CopyOnWriteArrayList  内部数组volatile修饰,多线程可见,增删改操作时加锁,copy一份修改副本,再用副本覆盖原属性。线程安全,数据更新有延迟,查询性能高

 

为什么CopyOnWriteArrayList要写时拷贝:

volatile变量修饰的对象数组是引用类型,直接修改数组内部的话,array不会更新

copy副本覆盖对象会更改array变量,进而缓存一致刷新

posted @ 2023-01-29 12:18  小万2333  阅读(49)  评论(1)    收藏  举报