即使假設您將構建其他映射的成本排除在putAll()
之外,通常(即不是併發),putAll()
也不會比使用批次的put()
更高效。這是因爲putAll()
將需要迭代傳遞的Map元素,並且需要貫穿算法,將每個鍵值對添加到執行的映射。ConcurrentHashMap和putAll()方法
但是對於一個ConcurrentHashMap,構建一個常規Map然後使用putAll()
來更新它是否有意義?或者我應該對put()
進行10(或100,或1000)的呼叫?
對於putIfAbsent()
的多次呼叫,答案是否會更改?
謝謝!
你甚至使用線程來填充ConcurrentHashMap嗎?如果不是,則putAll()或100個連續put()的 – jitter 2009-11-05 02:18:07
之間不會有任何區別是(至少)有一個線程正在寫入ConcurrentHashMap,並且多個線程正在讀取它。 – Rudiger 2009-11-05 02:25:18
PutAll()就像是一個在CHM中添加多個元素的自動化過程,比一個一個地自己做。 – AKS 2013-08-20 04:14:10