Встречается на собеседованиях • сегодня
Как можно отследить Deadlock
Deadlock можно отследить с помощью инструментов мониторинга или анализа дампов потоков.
1. **JConsole/VisualVM**: Подключитесь к JVM и проверьте вкладку "Threads" — там могут отображаться заблокированные потоки.
2. **jstack**: Запустите `jstack ` для получения дампа потоков. Ищите блокировки с `BLOCKED` статусом и взаимные зависимости.
3. **Thread Dump**: Анализируйте логи, где потоки ждут мониторы, захваченные другими потоками.
Пример Deadlock:
```java
Object lock1 = new Object();
Object lock2 = new Object();
new Thread(() -> {
synchronized (lock1) {
synchronized (lock2) {} // Ждёт lock2
}
}).start();
new Thread(() -> {
synchronized (lock2) {
synchronized (lock1) {} // Ждёт lock1
}
}).start();
```
В дампе будет что-то вроде:
```
Found one Java-level deadlock:
Thread-1 waiting for lock2, held by Thread-2
Thread-2 waiting for lock1, held by Thread-1
```

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