Недавно я посетил интервью, на котором интервьюер задал мне вопрос о HashMap
и ConcurrentHashMap
. После первоначальных преимуществ по обеспечению безопасности потоков я сказал, что он не бросает ConcurrentModificationException
, когда он проходит, а не HashMap
.Создает ли ConcurrentHashMap собственную копию?
Интервьюер продолжил и спросил меня, почему он его не бросает. Я сказал, что внутренне HashMap
имеет переменную modCount
, которая сохраняет количество изменений, внесенных в карту, и Iterator
сравнивает это число с тем, которое оно было инициализировано при создании. Если это число отличается, оно выдаст исключение, и это сравнение не произойдет для ConcurrentHashMap
.
Он тогда сказал, что ConcurrentHashMap
сделает копию себя при обходе.
У меня есть сомнения по поводу этого утверждения, так как они не встречались раньше. Даже чтение документации не дает мне достаточного ответа.
Будет ли он в любой момент копировать (читать или писать)?
* ConcurrentHashMap сделает копию себя при прохождении * - Он ошибается. Посмотрите на исходный код –
'Он тогда сказал, что ConcurrentHashMap сделает копию самого себя при обходе.' Ничего не в javadoc является чистым bs.Другие детали реализации могут быть истинными в определенный момент времени, но не могут претендовать на столь сильное утверждение. – UmNyobe
Надеюсь, вы не получили работу. – UmNyobe