1. 程式人生 > >HashMap深度原理解析

HashMap深度原理解析

      為什麼說HashMap是執行緒不安全的 ,多執行緒中有可能會造成死迴圈, HashMap採用連結串列解決Hash衝突。因為是連結串列結構,那麼就很容易形成閉合的鏈路,這樣在迴圈的時候只要有執行緒對這個HashMap進行get操作就會產生死迴圈。但是,我好奇的是,這種閉合的鏈路是如何形成的呢。在單執行緒情況下,只有一個執行緒對HashMap的資料結構進行操作,是不可能產生閉合的迴路的。那就只有在多執行緒併發的情況下才會出現這種情況,那就是在put操作的時候,如果size>initialCapacity*loadFactor,那麼這時候HashMap就會進行rehash操作,隨之HashMap的結構就會發生翻天覆地的變化。很有可能就是在兩個執行緒在這個時候同時觸發了rehash操作,產生了閉合的迴路。