美文网首页
(二十) copyonwrite

(二十) copyonwrite

作者: hedgehog1112 | 来源:发表于2020-11-08 10:13 被阅读0次

一、copyonwrite机制

写时复制: 1、添加数据时,先拷贝存储的数组,,2、用现在(拷好)数组 替换 成员变量数组(就是get等读取操作读取的数组)。和读写锁一样,改进:读时可写入 ,省竞争,同时写还是加锁。

二、java中的copyonwrite

实现线程安全集合:copyonwritearraylist,copyonwritearrayset(底层实现是copyonwritearraylist)。下面看实现:

1、get没什么特殊,成员变量用volatile,保证读最新

2、重点add:1)需要reentrantlock加锁的,2)复制和添加数据:setArray过程中,把新数组赋值给成员变量array(引用指向,java保证赋值原子操作)

3、迭代:获取传递给迭代器数组值,进行迭代,中间就算加入新值迭代不到。在构造函数中就直接赋值给final的成员变量

三、适用场景

线程安全,但add不停拷贝费时,到这集合时尽量不频繁add,而且迭代时数据不及时,数据多时,实时性差距大。多读少add时效果不错(数据量大无所谓,只要不添加)

https://www.jianshu.com/p/afc6e0ae08b0

相关文章

网友评论

      本文标题:(二十) copyonwrite

      本文链接:https://www.haomeiwen.com/subject/emxtbktx.html