java中写时复制(copy-on-write)map实现(代码片段)

禅与计算机程序设计艺术 禅与计算机程序设计艺术     2023-02-20     144

关键词:

什么是写时复制(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)(代码片段)

...好,我是大明哥。个人网站:https://www.cmsblogs.com/copy-on-write,即写时复制技术,这是小编在学习Redis持久化时看到的一个概念,当然在这个概念很早就碰到过(Java容器并发有这个概念),但是一直都... 查看详情

什么是写时复制?

】什么是写时复制?【英文标题】:Whatiscopy-on-write?【发布时间】:2010-10-1208:26:32【问题描述】:我想知道copy-on-write是什么以及它的用途。SunJDK教程中多次提到该术语。【问题讨论】:【参考方案1】:我本来打算写下我自己的... 查看详情

死磕java基础—谈谈那个写时拷贝技术(copy-on-write)(代码片段)

...好,我是大明哥。个人网站:https://www.cmsblogs.com/copy-on-write,即写时复制技术,这是小编在学习Redis持久化时看到的一个概念,当然在这个概念很早就碰到过(Java容器并发有这个概念),但是一直都... 查看详情

利用“写时复制”将数据复制到 Multiprocessing.Pool() 工作进程

...到Multiprocessing.Pool()工作进程【英文标题】:Leveraging"Copy-on-Write"toCopyDatatoMultiprocessing.Pool()WorkerProcesses【发布时间】:2016-10-3106:20:53【问题描述】:我有一点multiprocessingPython代码,看起来有点像这样:importtimefrommulti 查看详情

写时拷贝cow(copy-on-write)

   写时拷贝技术是通过"引用计数"实现的,在分配空间的时候多分配4个字节,用来记录有多少个指针指向块空间,当有新的指针指向这块空间时,引用计数加一,当要释放这块空间时,引用计数减一(假装释放),直到... 查看详情

qemu使用copy-on-write(cow)磁盘

写时复制(copy-on-write,缩写COW)技术不会对原始的镜像文件做更改,变化的部分写在另外的镜像文件中,这种特性在qemu中只有QCOW格式支持,多个COW文件可以指向同一映像同时测试多个配置,而不会危及基本系统。下面以windows2003... 查看详情

docker背后的内核知识

...隔离,且通过了cgroups实施了资源约束,通过写时复制(copy-on-write)机制实现了高效的文件操作。下面将详细介绍一下这三者。 一、写时复制(c 查看详情

英文copy是啥意思?

...opyright版权一切;复制权zero-copy零复制;零拷贝;零复印;拷贝copy-on-write写入时复制;写时复制;写时拷贝;技术参考技术A英文copy是什么意思?英文copy翻译成中文意思是:复制;复印;模仿;仿造;临摹;抄写;誊写;效法;仿效。 参... 查看详情

linuxbtrfs文件系统及管理

...xbtrfs文件系统及管理  linux文件系统,具有写时复制COW(copy-on-write),改善ext3文件系统单文件大小限制,并加入其他特性,如可写快照,快照的快照,内建RAID,子卷(subvloume),专注于容错,修复和易于管理,下面一起来看看什么... 查看详情

linux0.11-写时复制-30(代码片段)

Linux0.11-写时复制-30写时复制储备知识写时复制的本质看看代码咋写的转载写时复制这里讲的是Linux内核里的写时复制原理。写时复制的原理网上讲述的文章很多,今天来一篇很直接的文章,通过看看Linux0.11这个最简单的... 查看详情

linux0.11-写时复制-30(代码片段)

Linux0.11-写时复制-30写时复制储备知识写时复制的本质看看代码咋写的转载写时复制这里讲的是Linux内核里的写时复制原理。写时复制的原理网上讲述的文章很多,今天来一篇很直接的文章,通过看看Linux0.11这个最简单的... 查看详情

探秘写时拷贝的真相发布啦!

导读写时拷贝(copy-on-write,COW)就是等到修改数据时才真正分配内存空间,这是对程序性能的优化,可以延迟甚至是避免内存拷贝,当然目的就是避免不必要的内存拷贝。什么是写时拷贝其实我们对写时... 查看详情

写时复制技术

写时复制技术最初产生于Unix系统,用于实现一种傻瓜式的进程创建:当发出fork(  )系统调用时,内核原样复制父进程的整个地址空间并把复制的那一份分配给子进程。这种行为是非常耗时的,因为它需要: ·  ... 查看详情

docker存储技术浅析(代码片段)

...s7的基础image,因为基础image大家都一样写时复制CoWCoW就是copy-on-write,表示只在需要写时才去复制,这个是针对已有文件的修改场景。比如基于一个image启动多个Container,如果为每个Container都去分配一个image一样的文件系统,那么... 查看详情

进程创建函数fork

...共享,例如文件偏移量。存储空间多采用写时复制的方式Copy-On-Write。一开始共享存储空间,直到子进程试图修改某个区域时,进行复制。复制单位一般为页大小。常见用 查看详情

Python写时复制或访问时复制共享内存

】Python写时复制或访问时复制共享内存【英文标题】:Pythoncopy-on-writeorcopy-on-accesssharedmemory【发布时间】:2021-04-0523:29:11【问题描述】:我试图了解进程之间共享内存的工作原理,但我陷入了困境。我正在使用一个非常简单的测... 查看详情

swift5写入时复制copy-on-write

...类型的一个特点是在传递和赋值时进行复制。swift使用了copy-on-write来避免频繁复制带来的额外开销。只有当多个对象指向相同的资源,其中一个对象尝试修改资源内容时,copy才会触发。维基百科描述很清晰苹果关于数组使用copy-... 查看详情

fork()和写时复制

写时复制技术最初产生于Unix系统,用于实现一种傻瓜式的进程创建:当发出fork(  )系统调用时,内核原样复制父进程的整个地址空间并把复制的那一份分配给子进程。这种行为是非常耗时的,因为它需要: ·  ... 查看详情