织梦网站主页底,潍坊大型做网站建设的公司,购物网站建设与开发,泉州网站建设选择讯呢原理
初始化时候#xff0c;CopyOnWriteArrayList内部维护了一个可变数组#xff0c;用于存储元素当执行数据变更操作的时候#xff0c;会先创建一个原数组的副本#xff0c;在副本上进行写操作#xff0c;修改副本中的元素。写操作完成之后#xff0c;把原数组的引用指…原理
初始化时候CopyOnWriteArrayList内部维护了一个可变数组用于存储元素当执行数据变更操作的时候会先创建一个原数组的副本在副本上进行写操作修改副本中的元素。写操作完成之后把原数组的引用指向新数组。读操作直接在原数组上进行因为读操作不会改变数据所以读操作不会加锁
优点
我们可以对CopyOnWriteArrayList并发的读而不需要加锁采用了读写分离的思想读和写不同的容器
缺点
内存占用问题因为CopyOnWriteArrayList的写时复制机制在写的时候内存中会出现两个对象的内存旧的对象和新写入的对象可能会造成频繁的young gc和full gc影响性能数据一致性问题CopyOnWriteArrayList只能保证数据的最终一致性不能保证数据的实时一致性。所以你希望写入的数据马上被得到就不能用CopyOnWriteArrayList