Встречается на 2% собеседований по Java

В чем разница между synchronizedMap и ConcurrentHashMap

synchronizedMap и ConcurrentHashMap оба обеспечивают потокобезопасность, но по-разному:

  1. Блокировки:
    • synchronizedMap использует глобальную блокировку на весь Map при операциях (низкая производительность при конкуренции)
    • ConcurrentHashMap использует сегментированные блокировки (блокируется только сегмент, где происходит операция)
  1. Итераторы:

    • synchronizedMap бросает ConcurrentModificationException при изменении во время итерации
    • ConcurrentHashMap позволяет безопасно итерировать и изменять коллекцию одновременно
  2. Null-значения:

    • synchronizedMap разрешает null-ключи и значения
    • ConcurrentHashMap запрещает null

Пример:

java
// synchronizedMap
Map<String, String> syncMap = Collections.synchronizedMap(new HashMap<>());

// ConcurrentHashMap
ConcurrentHashMap<String, String> concMap = new ConcurrentHashMap<>();

Используйте ConcurrentHashMap для высоконагруженных многопоточных приложений, synchronizedMap - для простых случаев с низкой конкуренцией.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы