В javadoc для ConcurrentHashMap указано следующее:
Операции получения (включая получение) обычно не блокируются, поэтому могут перекрываться с операциями обновления (включая размещение и удаление). Извлечения отражают результаты последних завершенных операций обновления, удерживаемых с момента их начала. Для агрегированных операций, таких как putAll и clear, одновременные извлечения могут отражать вставку или удаление только некоторых записей. Так же, Итераторы и перечисления возвращают элементы, отражающие состояние хеш-таблицы в какой-то момент во время или после создания итератора / перечисления. Они не генерируют исключение ConcurrentModificationException. Однако итераторы предназначены для одновременного использования только одним потоком.
Что это означает? Что произойдет, если я попытаюсь выполнить итерацию карты с двумя потоками одновременно? Что произойдет, если я добавлю или удалю значение с карты во время итерации?