Przejdź do treści
Wyjątki JavaKrytyczny
Deadlock

Deadlock

Dwa lub więcej wątków jest zablokowanych na zawsze, każdy czekając na zwolnienie blokady przez drugi.

jvmspring

Co powoduje ten błąd

Wątek A trzyma blokadę 1 i czeka na blokadę 2, podczas gdy wątek B trzyma blokadę 2 i czeka na blokadę 1. Żaden wątek nie może kontynuować, powodując zawieszenie aplikacji. Jest to stan w czasie wykonania, a nie wyjątek.

Jak to naprawić

Zawsze pozyskuj blokady w spójnej kolejności. Używaj tryLock() z limitami czasu. Minimalizuj zakres bloków synchronized. Używaj narzędzi z java.util.concurrent zamiast ręcznego blokowania. Używaj jstack do wykrywania zakleszczeń.

Oficjalna dokumentacja

Powiązane kody błędów