Ga naar inhoud
Java-uitzonderingenFataal
Deadlock

Deadlock

Twee of meer threads zijn permanent geblokkeerd terwijl elk wacht tot de ander een vergrendeling vrijgeeft.

jvmspring

Wat veroorzaakt deze fout

Thread A houdt lock 1 vast en wacht op lock 2, terwijl thread B lock 2 vasthoudt en wacht op lock 1. Geen van beide threads kan verdergaan, waardoor de applicatie vastloopt. Dit is een runtimeconditie, geen uitzondering.

Hoe op te lossen

Verwerf vergrendelingen altijd in een consistente volgorde. Gebruik tryLock() met time-outs. Minimaliseer de reikwijdte van gesynchroniseerde blokken. Gebruik java.util.concurrent-hulpmiddelen in plaats van handmatige vergrendeling. Gebruik jstack om deadlocks op te sporen.

Officiële documentatie

Gerelateerde foutcodes