Aller au contenu
Exceptions JavaCritique
Deadlock

Deadlock

Deux threads ou plus sont bloqués indéfiniment, chacun attendant que l'autre libère un verrou.

jvmspring

Causes de cette erreur

Le thread A détient le verrou 1 et attend le verrou 2, tandis que le thread B détient le verrou 2 et attend le verrou 1. Aucun thread ne peut progresser, ce qui fait planter l'application. C'est une condition d'exécution, pas une exception.

Comment la corriger

Acquérez toujours les verrous dans un ordre cohérent. Utilisez tryLock() avec des délais d'attente. Minimisez la portée des blocs synchronized. Utilisez les utilitaires java.util.concurrent au lieu du verrouillage manuel. Utilisez jstack pour détecter les deadlocks.

Documentation officielle

Codes d'erreur associés