Встречается на собеседованиях • сегодня
Что такое DeadLock
DeadLock — ситуация, когда два или более потока блокируют друг друга, ожидая освобождения ресурсов, которые удерживают сами.
Пример:
java
Object lock1 = new Object();
Object lock2 = new Object();
Thread t1 = new Thread(() -> {
synchronized (lock1) {
try { Thread.sleep(100); } catch (Exception e) {}
synchronized (lock2) { // Ждёт lock2, но он удерживается t2
System.out.println("Thread 1");
}
}
});
Thread t2 = new Thread(() -> {
synchronized (lock2) {
try { Thread.sleep(100); } catch (Exception e) {}
synchronized (lock1) { // Ждёт lock1, но он удерживается t1
System.out.println("Thread 2");
}
}
});
t1.start();
t2.start();
text
**Причины:**
- Взаимная блокировка (циклическая зависимость).
- Отсутствие упорядоченного захвата ресурсов.
**Как избежать:**
- Использовать `Lock.tryLock()` с таймаутом.
- Захватывать ресурсы в одинаковом порядке.
- Уменьшать время удержания блокировок.как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы
