В чём разница: ConcurrentHashMap: Java 7 vs Java 8?

Ответ

Java 7: массив Segment (ReentrantLock), каждый сегмент — свой HashMap. Java 8: убрали Segment, CAS + synchronized на головах бакетов (лучше параллелизм). Treeify при 8 коллизиях.

Разбор: В Java 7 параллелизм обеспечивали сегменты, каждый со своим ReentrantLock (число сегментов = уровень конкуренции), а в Java 8 сегменты убрали, перейдя на CAS при вставке в пустой бакет и synchronized на голове бакета, плюс treeify при 8 коллизиях. Ловушки — приписать единый замок Java 7, поменять местами эпохи Segment/CAS или утверждать, что сегменты сохранились в Java 8.

Хочешь так же по своей компании — с вопросами по грейдам и задачами? Закажи гайд или забери свежее в Telegram.

Заказать гайд Пройти тест
новые гайды и свежие вопросы с собесов — первыми в Telegram Смотреть гайды Подписаться