我正在阅读《Java Concurrency in Practice》这本书。第 85 页第 5.2.1 节讨论了 ConcurrentHashMap 及其优点。然而,书中的一部分声称
ConcurrentHashMap 返回的迭代器是弱一致的。这
意味着这个迭代器可以容忍并发修改,
遍历构造迭代器时存在的元素,并且
可能(但不保证)反映对集合的修改
构造迭代器之后。
从为什么我理解并发程序中同步的全部意义在于允许线程以一致的方式访问共享资源,而 ConcurrentHashMap 并没有真正实现这一点。那为什么还要使用它呢?
重点是avoid不需要时同步。如果您不介意在某些情况下看到新元素而在其他情况下看不到它们,请使用ConcurrentHashMap
的迭代器可以比either防止其他线程在迭代时添加项目or创建迭代器时获取一致的快照。
所以,是的,当您需要同步和一致的迭代器时,您将需要一个替代方案 - 但当您不需要时,您可以利用提供的更高效的迭代器ConcurrentHashMap
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)