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

В каком состоянии находится поток при Deadlock

Поток в состоянии Deadlock блокируется, ожидая освобождения ресурса, который удерживается другим потоком, также находящимся в Deadlock. Оба потока не могут продолжить выполнение, но JVM не переводит их в какое-то особое состояние — технически они остаются в состоянии BLOCKED или WAITING, в зависимости от используемых механизмов синхронизации (мониторы, Lock, wait/notify).

Пример Deadlock:

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

Thread t1 = new Thread(() -> {
    synchronized (lock1) {
        synchronized (lock2) {} // Ждёт lock2, но его удерживает t2
    }
});

Thread t2 = new Thread(() -> {
    synchronized (lock2) {
        synchronized (lock1) {} // Ждёт lock1, но его удерживает t1
    }
});

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

Потоки t1 и t2 зависнут в BLOCKED, так как каждый ждёт ресурс, занятый другим.

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

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

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

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