クイズで以下のことを尋ねられたとき、私は自分の理解に多少混乱しました。
1) ConcurrentHashMap
: 私の理解では、このマップから値 (キーに対応) を取得するためのロックはありません。質問: これが true の場合、t1 が (セグメント/バケットをロックすることによって) 書き込みを行っており、t2 が同じものを読み取ろうとすると、t2 は正しい値を取得できず、t2 の値に一貫性がなくなります。
2)HashMap
:私の理解によると、要素がハッシュバケットに追加される前に、ハッシュ値Hはキー(key.hashcode())のハッシュコード%16(0から15の値を与える)として計算され、バケットに追加されますハッシュ値が Hで
ある 注 : 16 個のバケット (デフォルトの実装) がありArrayList
、LinkedList
|0 |1 |2 |3 |4 |5 |6 |7 |8 |9 |10 | 11 |12 |13 |14 |15 |
ArrayList at 2000(メモリアドレス)
これはConcurrentHashMap のセグメンテーションの複製であると非常によく言えます。Javaコントローラーでの同時 hashmap 、 HashMap または ConcurrentHashMapの内部動作に関して? などしかし、疑問について理解する必要があります。良い説明へのリンク/ブログはほとんどありません。ありがとう