Встречается на собеседованиях • сегодня
Что такое дедлок
Дедлок (deadlock) — ситуация, когда два или более потока блокируют друг друга, ожидая освобождения ресурсов, которые удерживают сами.
Условия возникновения:
- Взаимная блокировка — потоки удерживают ресурсы и ждут другие.
- Удержание и ожидание — поток держит один ресурс и ждёт другой.
- Отсутствие вытеснения — ресурсы нельзя отобрать у потоков.
- Круговая зависимость — потоки образуют замкнутый цикл ожидания.
Пример:
java
Object lock1 = new Object();
Object lock2 = new Object();
Thread t1 = new Thread(() -> {
synchronized (lock1) {
synchronized (lock2) { // Ждёт lock2, но его держит t2
System.out.println("Thread 1");
}
}
});
Thread t2 = new Thread(() -> {
synchronized (lock2) {
synchronized (lock1) { // Ждёт lock1, но его держит t1
System.out.println("Thread 2");
}
}
});
t1.start();
t2.start();Как избежать:
- Упорядочивание блокировок (всегда брать lock1, потом lock2).
- Использование
tryLock()с таймаутом. - Отказ от вложенных синхронизаций.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы