Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Java: livelock, deadlock

Чем livelock отличается от deadlock?

Вопрос проверяет умение различать разные виды проблем конкурентного выполнения.

Короткий ответ

При deadlock потоки полностью остановлены и ничего не делают. При livelock потоки продолжают работать, но не продвигаются к результату. Они постоянно реагируют друг на друга. CPU при этом может активно использоваться. С точки зрения результата система так же бесполезна.

Длинный ответ

Deadlock и livelock внешне похожи, но принципиально различаются по поведению потоков.

Поведение при deadlock

При deadlock:

  • потоки заблокированы

  • они ждут освобождения ресурсов

  • CPU практически не используется

  • состояние стабильно и неизменно

Поведение при livelock

При livelock:

  • потоки активно выполняются

  • они постоянно меняют свое состояние

  • каждый поток «уступает» другому

  • полезная работа не выполняется

Пример логики:

  • поток A видит, что ресурс занят, и отступает

  • поток B делает то же самое

  • ситуация повторяется бесконечно

Почему livelock опасен

Livelock:

  • нагружает CPU

  • сложен для диагностики

  • выглядит как «работающая» система

Как бороться

Подходы:

  • добавление случайных задержек

  • ограничение количества повторных попыток

  • изменение стратегии синхронизации

Вывод: deadlock — это остановка, livelock — бесконечная бесполезная активность.

Уровень

  • Рейтинг:

    4

  • Сложность:

    7

Навыки

  • Java

    Java

Ключевые слова

#livelock

#deadlock

Подпишись на Java Developer в телеграм