DeadlockDeadlock
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.
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.
Relaterade felkoder
ArrayStoreExceptionArrayStoreException
Ett objekt av fel typ lagras i en array.
NullPointerExceptionNullPointerException
En null-referens används där ett objekt krävs.
NegativeArraySizeExceptionNegativeArraySizeException
En array skapas med en negativ storlek.
ConcurrentModificationExceptionConcurrentModificationException
En samling modifieras medan den itereras.
LinkageErrorLinkageError
En klass har ett beroende till en annan klass som har en inkompatibel förändring.
ClosedChannelExceptionClosedChannelException
En operation försöks på en kanal som har stängts.