Gå till innehåll
Java-undantagKritisk
Deadlock

Deadlock

Två eller fler trådar är blockerade för alltid och väntar var och en på att den andra ska frigöra ett lås.

jvmspring

Vad som orsakar detta fel

Tråd A håller lås 1 och väntar på lås 2, medan tråd B håller lås 2 och väntar på lås 1. Ingen tråd kan fortsätta, vilket får applikationen att hänga sig. Detta är ett körtidstillstånd, inte ett undantag.

Hur man åtgärdar det

Förvärva alltid lås i en konsekvent ordning. Använd tryLock() med tidsgränser. Minimera omfånget av synchronized-block. Använd java.util.concurrent-verktyg i stället för manuell låsning. Använd jstack för att detektera dödlägen.

Officiell dokumentation

Relaterade felkoder