我已經閱讀了幾條來自不同來源的關於ConcurrentHashmap
的聲明,並希望驗證它們是否確實如此。關於Concurrenthashmap的事實
被創建爲一個
ConcurrentHashmap
迭代之後,只有通過螺紋移除和更新操作被保證得到反映。 迭代器在編輯/刪除後是否刷新其快照?爲什麼迭代器將一個更新/刪除與ADD不同。ConcurrentHashmap
將其數據分段爲段以減少寫入程序鎖定爭用。concurrencyLevel
參數直接指定內部創建的分片的數量。 如果我們只是使用無參數構造函數,並接受默認配置,那麼在您添加第一個值之前,地圖將實例化16個分片所需的對象... 這裏的分片意味着什麼?它是地圖中的一桶數據 - 還是整個地圖的副本。 我明白這與數據庫中的頁面相似,可以獨立鎖定毛髮更新。 爲什麼concurrencyLevel
會影響記憶呢?
'它是如何在內部獲得的?觀看'ConcurrentHashmap'的源代碼。 –
要回答你的第二點:他們是細分市場。每個分段都包含一部分數據。您通過key.hashCode()的散列獲得正確的段。我不會將此作爲答案,因爲我不確定如何回答第一個問題。 – dierre