Deadlock — взаимная блокировка: поток A держит лок 1 и ждёт лок 2, поток B держит лок 2 и ждёт лок 1. Никто не может продолжить. Условия: mutual exclusion, hold and wait, no preemption, circular wait. Избежать: 1) фиксированный порядок захвата локов, 2) tryLock с таймаутом, 3) избегать вложенных блокировок, 4) один лок на всё (грубо, но работает). Обнаружить: jstack, ThreadMXBean.findDeadlockedThreads(), VisualVM. В логах — потоки в состоянии BLOCKED.
Что такое deadlock и как его избежать?
Senior
379 просмотровAFK Offer AI
Что такое наследование в Java?