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

Какие знаешь методы борьбы с Deadlock

Основные методы предотвращения deadlock:

  1. Упорядоченное получение блокировок - всегда захватывать ресурсы в одном порядке. Например:
java
// Всегда сначала lock1, потом lock2
synchronized(lock1) {
    synchronized(lock2) {
        // critical section
    }
}
  1. Использование tryLock() - с таймаутом для избежания бесконечного ожидания:
java
if (lock1.tryLock(100, TimeUnit.MILLISECONDS)) {
    try {
        if (lock2.tryLock(100, TimeUnit.MILLISECONDS)) {
            // critical section
        }
    } finally {
        lock2.unlock();
    }
}
  1. Разрушение условий deadlock:
  • Отказаться от взаимной блокировки (необходимость и достаточность)
  • Ввести приоритеты потоков
  • Использовать атомарные операции вместо блокировок
  1. Обнаружение deadlock - мониторинг через JMX или ThreadMXBean.

Лучшая практика - проектировать систему так, чтобы минимизировать необходимость в блокировках.

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

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

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

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