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

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

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

  1. Избегание циклических ожиданий – упорядочивание блокировок (например, всегда захватывать lockA перед lockB).
java
// Правильный порядок
synchronized(lockA) {
    synchronized(lockB) { ... }
}
  1. Timeout в блокировках – использование tryLock() с таймаутом.
java
if (lock1.tryLock(1, TimeUnit.SECONDS)) {
    try {
        if (lock2.tryLock(1, TimeUnit.SECONDS)) { ... }
    } finally { lock2.unlock(); }
} finally { lock1.unlock(); }
  1. Отказ от части блокировок – перепроектирование логики (например, атомарные операции, immutable объекты).

  2. Deadlock detection – мониторинг с помощью JMX или специализированных инструментов (JConsole, VisualVM).

  3. Использование higher-level примитивовConcurrentHashMap, CountDownLatch и т.д. вместо ручных блокировок.

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

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

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

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