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

Что такое гарантированный дедлок

Гарантированный дедлок — это ситуация, когда два или более потока блокируются навсегда, ожидая ресурсы, удерживаемые друг другом. Это происходит при одновременном выполнении четырёх условий:

  1. Взаимное исключение — ресурсы не могут быть разделены.
  2. Удержание и ожидание — поток удерживает ресурс и ждёт другой.
  3. Отсутствие вытеснения — ресурсы нельзя отобрать у потока.
  4. Циклическое ожидание — потоки образуют цикл ожидания.

Пример:

java
Object lock1 = new Object();
Object lock2 = new Object();

Thread t1 = new Thread(() -> {
    synchronized (lock1) {
        synchronized (lock2) {} // Ждёт lock2
    }
});

Thread t2 = new Thread(() -> {
    synchronized (lock2) {
        synchronized (lock1) {} // Ждёт lock1
    }
});

t1.start();
t2.start();

Здесь потоки t1 и t2 гарантированно заблокируют друг друга.

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

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

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

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