JAVA中写时复制(Copy-On-Write)Map实现

Posted 禅与计算机程序设计艺术

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA中写时复制(Copy-On-Write)Map实现相关的知识,希望对你有一定的参考价值。

什么是写时复制(Copy-On-Write)容器?

写时复制是指:在并发访问的情景下,当需要修改JAVA中Containers的元素时,不直接修改该容器,而是先复制一份副本,在副本上进行修改。修改完成之后,将指向原来容器的引用指向新的容器(副本容器)。

写时复制带来的影响

①由于不会修改原始容器,只修改副本容器。因此,可以对原始容器进行并发地读。其次,实现了读操作与写操作的分离,读操作发生在原始容器上,写操作发生在副本容器上。

②数据一致性问题:读操作的线程可能不会立即读取到新修改的数据,因为修改操作发生在副本上。但最终修改操作会完成并更新容器,因此这是最终一致性。

自己实现一个CopyOnWriteHashMap

在JDK中提供了CopyOnWriteArrayList类和CopyOnWriteArraySet类,但是并没有提供CopyOnWriteMap的实现。因此,可以参考CopyOnWriteArrayList自己实现一个CopyOnWriteHashMap

这里主要是实现 在写操作时,如何保证线程安全。

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;


public class CopyOnWriteMap<K, V> implements Map<K, V>, Cloneable

    private volatile Map<K, V> internalMap;
    
    public CopyOnWriteMap() 
        internalMap = new HashMap<

以上是关于JAVA中写时复制(Copy-On-Write)Map实现的主要内容,如果未能解决你的问题,请参考以下文章

死磕 Java 基础 — 谈谈那个写时拷贝技术(copy-on-write)

死磕 Java Core — 谈谈那个写时拷贝技术(copy-on-write)

性能优化之写时复制(Copy-on-write:COW)

Linux写时拷贝技术(copy-on-write)

Linux写时拷贝技术(copy-on-write)

Linux写时复制(CopyOnWrite)|写时拷贝|rcu