Jas*_*son 4 java hashmap concurrenthashmap
如果我使用并发hashmap并且我有设置和获取值的方法,因为我使用并发hashmap我需要使getter和setter同步吗?这是多余的吗?一种设计更好吗?
另外,没有同步的并发hashmap比具有synchronized getter和setter的hashmap更快吗?这是一个高性能系统
谢谢
java.util.concurrent.ConcurrentHashMap
是线程安全的 synchronized(object)
您还需要注意不要通过这样的代码创建"逻辑"竞争条件
if (map.get(key) != null) {
map.put(key, new SomethingStrictlyUnique());
}
Run Code Online (Sandbox Code Playgroud)根据经验,将同步集合替换为并发集合可以提供显着的可伸缩性改进,而风险很小.
根据javadoc,ConcurrentHashMap返回的迭代器是"弱一致的"(而不是fail-fast),所以它们容忍并发修改,遍历构造迭代器时存在的元素,并且可能反映出构造后对集合的修改.迭代器.
归档时间: |
|
查看次数: |
4730 次 |
最近记录: |