【问题标题】:Does ConcurrentHashMap implementation use cloning in remove operation?ConcurrentHashMap 实现是否在删除操作中使用克隆?
【发布时间】:2013-02-16 22:35:59
【问题描述】:

我正在阅读IBM DeveloperWorks article 以了解 ConcurrentHashMap 是如何实现的。 “删除操作”部分建议删除操作是一个两步过程:

  1. 找到 Entry 元素并将其设为 null
  2. 从头部到被移除元素的链部分被克隆并连接到被移除元素之后的链的其余部分。

不过我有一个问题,因为我检查了Docjar 的相应代码,但在remove(Object key, int hash, Object value) 中没有看到任何克隆。

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

【问题讨论】:

    标签: java list collections hashmap java.util.concurrent


    【解决方案1】:

    线

    head = new Entry(p.hash, p.key, p.value, head);
    

    进行克隆,它不是“Object.clone()”克隆,而是“复制构造函数”——这仍然是更一般意义上的克隆。

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

    【讨论】:

    • 感谢指点,不知道周围有没有更新的文章,求指点
    猜你喜欢
    • 2016-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-07
    • 2012-05-07
    • 1970-01-01
    • 2020-09-18
    • 1970-01-01
    相关资源
    最近更新 更多