Коллекции middle
В чём разница: 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.