2013-03-11 51 views
1

隨着ConcurrentHashMap中條目的增加,將執行重新散列並形成新的散列桶(16到32)。 問:當條目不斷增加時(參考我們可以將負載因子作爲參考),鎖(初始16)是否也會增加(至32),或者16個鎖將會在32個hashbuckets(每2個散列桶1個鎖) 1)ConcurrentHashMap Locks增加

Onre更多的問題:我想讀ConcurretnHashMap的implementaion,請分享

+0

http://www.docjar.com/html/api/java/util/concurrent/ConcurrentHashMap.java.html – James 2013-03-17 04:27:36

回答

1

一個ConcurrentHashMap的併發設置在初始化,並且不改變鏈接(比Java文檔/代碼等)。如果使用默認值16,那麼無論哈希值的大小有多大,總是16。

幾件事情要記住:

  • ConcurrentHashMap比正常HashMap來調整更加昂貴。你應該試着提供一個關於條目數的猜測,以便它不必調整大小。

  • 併發性是可以在理想情況下同時寫入地圖的線程數。讀者不會鎖定散列,所以當您擔心併發時,您不需要對它們進行計數。