【发布时间】:2014-06-13 03:43:52
【问题描述】:
我需要询问 ConcurrentHashMap 的以下方面,因为我无法从源代码中弄清楚。
(请注意,我不是在问行为,这是很好理解的。它是关于迭代器用于显示行为的机制)
"The iterator is guaranteed to reflect the state of the map at the time of it's creation."
1.这是否意味着迭代器获得了自己的备份映射副本? 为什么即使在创建迭代器之后,易失性读取也不会给出“价值”的真实状态? (代码的确切位置将不胜感激)
2. 非阻塞读取和迭代如何设法保持一致,即使是在一个段正在进行重新散列时?
【问题讨论】:
-
好吧,如果一个段正在重新散列,这意味着映射在结构上被修改了,并且根据 javadoc 迭代器没有必须反映修改后的修改被创造。如果他们这样做,我不知道他们是如何工作的。另外,我真的想说我以前见过类似的东西,但我不完全确定......
-
你从哪里得到这个报价?我不相信 ConcurrentHashMap 的行为是“很好理解的”: ConcurrentHashMap 的迭代器弱一致 ... javadoc 指出:“迭代器和枚举返回反映哈希表状态的元素在创建迭代器/枚举时或之后的某个时间点”。
标签: java collections concurrenthashmap