我需要問一下ConcurrentHashMap的下面幾個方面,因爲我無法從源代碼中找出它。
(請注意,我不是問的行爲,這是很好理解的,其有關機制的迭代器採用顯示行爲)Concurrenthashmap迭代器數據結構
"The iterator is guaranteed to reflect the state of the map at the time of it's creation."
1.Does這意味着迭代器獲取自己的副本的支持地圖? 即使在創建迭代器之後,爲什麼volatile讀取不會給出'value'的真實狀態呢? (代碼的確切位置將被讚賞)
2.即使段正在進行重新散列,非阻塞式讀取和迭代如何設法保持一致?
那麼,如果某個段正在進行重新散列,那麼這意味着該映射在結構上被修改了,並且根據javadoc迭代器不會*在創建它們之後反映修改。但如果他們這樣做,我不知道他們是如何工作的。另外,我真的很想說我以前看過類似的東西,但我不完全確定... – awksp
你從哪裏得到這個報價?我不相信ConcurrentHashMap行爲是「很好理解」的:ConcurrentHashMap的迭代器是*弱一致的* ... javadoc指出:「迭代器和枚舉返回反映散列表在某時的狀態或在迭代器/枚舉的創建「。 –