Vai al contenuto
Eccezioni JavaFatale
Deadlock

Deadlock

Due o più thread sono bloccati indefinitamente, ciascuno in attesa che l'altro rilasci un lock.

jvmspring

Cause di questo errore

Il thread A detiene il lock 1 e attende il lock 2, mentre il thread B detiene il lock 2 e attende il lock 1. Nessun thread può procedere, causando il blocco dell'applicazione. Si tratta di una condizione di runtime, non di un'eccezione.

Come correggerlo

Acquisire sempre i lock in un ordine coerente. Usare tryLock() con timeout. Minimizzare lo scope dei blocchi synchronized. Preferire le utilità di java.util.concurrent al locking manuale. Usare jstack per rilevare i deadlock.

Documentazione ufficiale

Codici di errore correlati