Коллекции middle
В чём разница: HashMap vs ConcurrentHashMap?
Ответ
HashMap: не потокобезопасен, допускает null-ключ. ConcurrentHashMap: Java 7 — Segment-блокировки, Java 8+ — CAS + synchronized на головах бакетов. null запрещён. computeIfAbsent — атомарная операция.
Разбор: HashMap не потокобезопасен и разрешает null-ключ и null-значения; ConcurrentHashMap потокобезопасен и null запрещает полностью. В Java 7 он использовал сегментные блокировки, в Java 8+ — CAS плюс synchronized на голове конкретного бакета (а не на всей таблице), что и даёт высокую конкурентность; computeIfAbsent при этом атомарна. Дистракторы путают гранулярность блокировки и поведение с null.
Хочешь так же по своей компании — с вопросами по грейдам и задачами? Закажи гайд или забери свежее в Telegram.