长话短说 CopyOnWrite 思想及其应用场景。
CopyOnWrite(写入时复制)思想
CopyOnWrite(简称COW,中文意思是:写入时复制)就是在进行写操作时,先复制要改变的对象,对副本进行写操作,完成对副本的操作后,把原有对象的引用指向副本对象。
CopyOnWrite采用了读写分离的思想解决了线程安全且支持读多写少等问题
关键点:
CopyOnWrite适用于读多写少的情况,最大程度的提高读的效率;
CopyOnWrite是最终一致性,在写的过程中,原有的读的数据是不会发生更新的,只有新的读才能读到最新数据;
如何使其他线程能够及时读到新的数据,需要使用volatile变量;
写的时候不能并发写,需要对写操作进行加锁;
CopyOnWriteArrayList的实现原理:
/** The lock protecting all mutators */
final transient ReentrantLock lock = new ReentrantLock