Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

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

Что такое deadlock?

Вопрос проверяет понимание классических проблем многопоточности и причин полной остановки выполнения потоков.

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

Deadlock — это ситуация, когда несколько потоков навсегда блокируют друг друга, ожидая освобождения ресурсов. Каждый поток удерживает ресурс и ждет другой, который занят другим потоком. В результате ни один поток не может продолжить выполнение. Программа при этом не падает, но перестает выполнять полезную работу. Это одна из самых опасных ошибок многопоточности.

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

Deadlock возникает из-за неправильного управления блокировками.

Что такое deadlock

Deadlock — это состояние, при котором:

  • поток A удерживает ресурс X и ждет ресурс Y

  • поток B удерживает ресурс Y и ждет ресурс X

  • ни один поток не может продолжить выполнение

Все участники находятся в вечном ожидании.

Классический пример

Типичный сценарий:

  • один поток захватывает lock1

  • второй поток захватывает lock2

  • каждый пытается получить второй lock

Пример:

synchronized (lock1) {
    synchronized (lock2) {
        // недостижимо
    }
}

Условия возникновения

Deadlock возможен при одновременном выполнении условий:

  • взаимное исключение

  • удержание и ожидание

  • отсутствие принудительного освобождения

  • циклическое ожидание

Как избегать deadlock

Основные подходы:

  • фиксированный порядок захвата блокировок

  • минимизация времени удержания lock’ов

  • использование tryLock

  • отказ от вложенных блокировок

Вывод: deadlock полностью останавливает выполнение потоков и требует осознанного проектирования синхронизации.

Уровень

  • Рейтинг:

    5

  • Сложность:

    6

Навыки

  • Java

    Java

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

#deadlock

#synchronization

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