我已经浏览了以下链接 在 String 对象上同步有问题吗? 和 http://illegalargumentexception.blogspot.com/2008/04/java-synchronizing-on-transient-id.html
现在我的问题:
- 我有一张地图,其中维护了用户 ID 和一些属性的列表
- 当我们遇到新的用户 ID 时,我们将在地图中创建一个条目
- 如果用户 ID 已经存在,我们将向该值添加一些属性
我们没有在整个地图上同步,而是尝试在用户 ID 上进行同步,这会导致一些随机行为,如果我们使用 intern() 它可以工作,第二个链接中的方法也可以工作
问题:
- 在第二种方法中,我们在获取密钥时仍然锁定整个地图
- 是否有其他同步方式,以便仅根据用户 ID 同步地图访问
- 做这个的最好方式是什么?