如果我使用并发哈希图并且我有设置和获取值的方法,因为我使用并发哈希图,我需要使 getter 和 setter 同步吗?这是多余的吗?有一种设计更好吗?
另外,没有同步的并发哈希图是否比具有同步 getter 和 setter 的哈希图更快?这是为了高性能系统
谢谢
-
java.util.concurrent.ConcurrentHashMap
是线程安全的
- 它比使用更快
synchronized(object)
-
您仍然需要小心,不要通过这样的代码创建“逻辑”竞争条件
if (map.get(key) != null) {
map.put(key, new SomethingStrictlyUnique());
}
根据经验,用并发集合替换同步集合可以提供显着的效果可扩展性风险很小的改进。
根据javadoc,ConcurrentHashMap 返回的迭代器是“弱一致”的(而不是快速失败),因此它们容忍并发修改,遍历构造迭代器时存在的元素,并且may反映迭代器构造后对集合的修改。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)