解决多线程的集合有以下几种
1、Vertor(所有方法上加synchronized锁)能保证多线程安全,数据一致,但性能低下一般不用
2、Collections.synchronizedList 方法 返回的List 在方法内部加锁,线程安全,数据一致,性能有提升
3、CopyOnWriteArrayList 内部数组volatile修饰,多线程可见,增删改操作时加锁,copy一份修改副本,再用副本覆盖原属性。线程安全,数据更新有延迟,查询性能高
为什么CopyOnWriteArrayList要写时拷贝:
volatile变量修饰的对象数组是引用类型,直接修改数组内部的话,array不会更新
copy副本覆盖对象会更改array变量,进而缓存一致刷新
标签:副本,CopyOnWriteArrayList,安全,加锁,线程,集合,多线程 From: https://www.cnblogs.com/xiaowan2333/p/17072354.html