编程语言
首页 > 编程语言> > java上的字符串同步为id

java上的字符串同步为id

作者:互联网

我已经通过以下链接
Problem with synchronizing on String objects?

http://illegalargumentexception.blogspot.com/2008/04/java-synchronizing-on-transient-id.html

现在我的问题:

>我有一个地图,其中维护了userid和一些属性的列表
>当我们遇到新的用户ID时,我们将在地图中创建一个条目
>如果userid已经存在,我们将为该值添加一些属性

而不是在整个地图上同步,我们试图在userid上同步并导致一些随机行为,如果我们使用intern()它的工作原理
第二个链接的方法也有效

问题:

>在第二种方法中,我们仍然在获取密钥时锁定整个地图
>是否存在其他一些同步方式,以便仅基于用户ID同步地图访问
>最好的方法是什么?

解决方法:

最好的方法是使用java.util.concurrent packageConcurrentHashMap.这个类有你需要的所有东西.不要重新发明轮子!

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

标签:string-interning,java,string,synchronization
来源: https://codeday.me/bug/20190903/1794943.html