gpt4 book ai didi

字符串作为id的java同步

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:55:43 24 4
gpt4 key购买 nike

我已经浏览了以下链接 Problem with synchronizing on String objects?http://illegalargumentexception.blogspot.com/2008/04/java-synchronizing-on-transient-id.html

现在我的问题:

  1. 我有一个 map ,其中维护了用户 ID 和一些属性的列表
  2. 当我们遇到新的用户 ID 时,我们将在映射中创建一个条目
  3. 如果用户 ID 已经存在,我们将向该值添加一些属性

我们尝试在用户 ID 上同步,而不是在整个 map 上同步,这会导致一些随机行为,如果我们使用 intern() 它会起作用第二个链接中的方法也有效

问题:

  1. 在第二种方法中,我们在获取 key 时仍然锁定整个 map
  2. 是否有其他同步方式,以便仅根据用户 ID 同步 map 访问
  3. 最好的方法是什么?

最佳答案

最好的方法是使用 ConcurrentHashMap来自 java.util.concurrent package .此类内置了您需要的一切。不要重新发明轮子!

注意:Thilo 是对的:您必须使用 ConcurrentHashMap 的特殊线程安全版本的 put:putIfAbsent()

关于字符串作为id的java同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7202880/

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