Встречается на собеседованиях • сегодня

Какие знаешь способы разрешения Deadlock

Deadlock возникает, когда потоки блокируют друг друга, ожидая ресурсы. Основные способы разрешения:

  1. Упорядоченное получение блокировок
    Всегда запрашивать блокировки в одном порядке. Например:
java
synchronized (lock1) {
    synchronized (lock2) {
        // код
    }
}
  1. Timeout для блокировок
    Использовать tryLock() с таймаутом вместо synchronized:
java
if (lock1.tryLock(1, TimeUnit.SECONDS)) {
    try {
        if (lock2.tryLock(1, TimeUnit.SECONDS)) {
            // код
        }
    } finally {
        lock2.unlock();
    }
}
  1. Обнаружение и восстановление
    Мониторинг системы на предмет deadlock и принудительное освобождение ресурсов.

  2. Избегание блокировок
    Использование атомарных операций (AtomicInteger и др.) или lock-free структур данных.

  3. Кооперативная отмена
    Потоки периодически проверяют флаги прерывания и освобождают ресурсы.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы