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()

上一篇:c – 等待win32线程


下一篇:c – 使用条件变量在Linux中实现Windows事件?