Проблемы многопоточности и мониторинг
Deadlock (взаимная блокировка) — два потока намертво ждут друг друга. Поток 1 захватил замок A и ждёт B; поток 2 захватил B и ждёт A. Никто не отпустит — программа висит.
Лечится тем, что все потоки захватывают замки в одном порядке (сначала A, потом B), или таймаутами.
Мониторинг. Дедлоки и зависшие потоки сложно поймать тестами — они проявляются под нагрузкой. Инструменты JDK для диагностики: jconsole, jstack (снимок стеков всех потоков — покажет, кто на чём заблокирован), VisualVM.
🎤 Закрыл тему, если можешь объяснить:
• что такое deadlock и как его избежать;
• чем можно продиагностировать зависший поток.
• чем можно продиагностировать зависший поток.