Deadlock (взаимная блокировка) - это ситуация, которая возникает в многопоточных приложениях, когда два или более потоков заблокированы и ждут друг друга, чтобы завершить выполнение определенных действий. В результате ни один из этих потоков не может продолжить свое выполнение, что приводит к задержке работы всего приложения. В Java есть два типа deadlock-а: Вот пример схематического изображения deadlocks: Thread deadlock
-----------------------
Thread A -> resource 1 -> resource 2
\ /
\ /
v v
Thread B -> resource 2 -> resource 1
Resource deadlock
------------------------
Thread A -> resource 1 -> Thread B
Thread B -> resource 2 -> Thread A На диаграмме "Thread deadlock" поток A ждет, чтобы поток B освободил доступ к ресурсу 2, в то время как поток B ждет, чтобы поток A освободил доступ к ресурсу 1. На диаграмме "Resource deadlock" поток A удерживает доступ к ресурсу 1, который нужен для работы потока