gpt4 book ai didi

java - 并发 hashmap 不需要同步的 getters/setters 吗?

转载 作者:搜寻专家 更新时间:2023-11-01 01:47:39 24 4
gpt4 key购买 nike

如果我正在使用并发 HashMap 并且我有设置和获取值的方法,因为我使用并发 HashMap ,我是否需要使 getter 和 setter 同步?这是多余的吗?一种设计更好吗?

此外,没有同步的并发 hashmap 是否比具有同步 getter 和 setter 的 hashmap 更快?这是一个高性能系统

谢谢

最佳答案

  1. java.util.concurrent.ConcurrentHashMap 是线程安全的
  2. 比使用synchronized(object)更快
  3. 您仍然需要注意不要通过这样的代码创建“逻辑”竞争条件

    if (map.get(key) != null) {
    map.put(key, new SomethingStrictlyUnique());
    }
  4. 根据经验,用并发集合替换同步集合可以提供显着的可扩展性改进,而且风险很小。

  5. 根据 the javadoc ,由 ConcurrentHashMap 返回的迭代器是“弱一致的”(而不是快速失败),因此它们容忍并发修改,遍历构造迭代器时存在的元素,并且可能在之后反射(reflect)对集合的修改迭代器的构造。

关于java - 并发 hashmap 不需要同步的 getters/setters 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4701261/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com