Я несколько запутался в своем понимании, когда в викторине меня спросили следующие вещи:
1)ConcurrentHashMap
: Насколько я понимаю, нет блокировки для получения значений (соответствующих ключу) с этой карты. Вопрос: если это правда, предположим, что t1 пишет (путем блокировки сегмента/ведра), а t2 пытается прочитать то же самое, t2 не получит правильное значение и, следовательно, несовместимое значение с t2
2)HashMap
: Насколько я понимаю, перед добавлением элемента в хешбакет хеш-значение H вычисляется как хэш-код% 16 (дает значения от 0 до 15) для ключа (key.hashcode( )) и затем добавляется в корзину, хэш-значение которой равно H. Примечание. Существует 16 групп (реализация по умолчанию), что представляет собой ArrayList
из LinkedList
|0 |1 |2 |3 |4 |5 |6 |7 |8 |9 |10 | 11 |12 |13 |14 |15 |
ArrayList в 2000 (адрес памяти)
Вы вполне можете сказать, что это дубликат сегментации в ConcurrentHashMap, Относительно внутренней работы параллельного hashmap, HashMap или ConcurrentHashMap на контроллерах Java? и т. д. Но мне нужно разобраться в сомнениях. несколько ссылок/блогов с хорошим объяснением будут работать для меня. Спасибо