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

Как можно отследить 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 ```
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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