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

Какие знаешь способы избежать Dead Lock

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

  2. Использование concurrent коллекций – например, ConcurrentHashMap вместо synchronized блоков.

  3. Анализ зависимостей – выявлять и устранять циклические зависимости между потоками.

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

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

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

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