Что такое Deadlock?

Ответ

Два+ потока ждут друг друга. Условия Коффмана: mutual exclusion, hold and wait, no preemption, circular wait. Избегать: упорядочить захват мониторов (lock A → lock B), tryLock с таймаутом. Обнаружение: jstack, VisualVM.

Разбор: Deadlock — взаимная блокировка: каждый из потоков удерживает ресурс, нужный другому, и циклически ждёт, поэтому ни один не продвигается. Все четыре условия Коффмана (mutual exclusion, hold and wait, no preemption, circular wait) должны выполняться одновременно; ломая хотя бы одно, например упорядочив захват блокировок, мы устраняем дедлок. Обнаружить можно через jstack или VisualVM. Дистракторы подменяют дедлок голоданием, livelock-подобной загрузкой CPU и гонкой данных — это другие проблемы.

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

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