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

Как и когда происходит Deadlock

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

Пример:

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

Thread t1 = new Thread(() -> {
    synchronized(lock1) {
        synchronized(lock2) { // Ждёт, пока t2 освободит lock2
            // Критическая секция
        }
    }
});

Thread t2 = new Thread(() -> {
synchronized(lock2) {
synchronized(lock1) { // Ждёт, пока t1 освободит lock1
// Критическая секция
}
}
});

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

text

Условия deadlock (все должны выполняться одновременно):
1. Взаимное исключение (ресурсы не могут быть разделены)
2. Удержание и ожидание (потоки удерживают ресурсы и ждут другие)
3. Отсутствие вытеснения (ресурсы нельзя отнять)
4. Циклическое ожидание (замкнутый круг зависимостей)
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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