Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ConcurrentHashMap实现是否在删除操作中使用克隆?_Java_List_Collections_Hashmap_Java.util.concurrent - Fatal编程技术网

Java ConcurrentHashMap实现是否在删除操作中使用克隆?

Java ConcurrentHashMap实现是否在删除操作中使用克隆?,java,list,collections,hashmap,java.util.concurrent,Java,List,Collections,Hashmap,Java.util.concurrent,我正在阅读一篇文章,以了解ConcurrentHashMap是如何实现的。“拆卸操作”一节建议拆卸操作分为两个步骤: 找到Entry元素并将其设为null 从头部到移除元素的链部分被克隆并连接到移除元素之后的链的其余部分 但是我在这里有一个问题,因为我在检查了相应的代码,在remove(objectkey,int hash,Object value)中没有看到任何克隆 我不确定我是否遗漏了什么,或者实现与本文不同?行 head = new Entry(p.hash, p.key, p.value

我正在阅读一篇文章,以了解ConcurrentHashMap是如何实现的。“拆卸操作”一节建议拆卸操作分为两个步骤:

  • 找到Entry元素并将其设为null
  • 从头部到移除元素的链部分被克隆并连接到移除元素之后的链的其余部分
  • 但是我在这里有一个问题,因为我在检查了相应的代码,在
    remove(objectkey,int hash,Object value)
    中没有看到任何克隆

    我不确定我是否遗漏了什么,或者实现与本文不同?

    head = new Entry(p.hash, p.key, p.value, head);
    
    在进行克隆时,它不是一个“Object.clone()”克隆,而是一个“copy constructor”——这仍然是更一般意义上的克隆


    请注意,这一行出现在10年前的文章中,在当前实现中找不到,其中
    remove(Object key,Object value)
    的实现完全不同。

    感谢指针,不确定是否有更多更新的文章,正在寻找指针