Java · Intermediário · Inglês · Técnico
deadlock
Situação em que duas ou mais threads ficam bloqueadas para sempre, cada uma esperando um lock que outra segura.
Onde usar
Aparece quando o sistema trava sem consumir CPU; o thread dump do jstack mostra 'Found one Java-level deadlock'.
Em código
synchronized (a) { // thread 1
synchronized (b) { }
}
synchronized (b) { // thread 2
synchronized (a) { } // deadlock
}Exemplos
The service froze because of a deadlock between two locks.
O serviço travou por causa de um deadlock entre dois locks.
Always acquire the locks in the same order.
Adquira os locks sempre na mesma ordem.
Cuidado
Não é lentidão: nada progride. A causa clássica é adquirir locks em ordens diferentes; fixe uma ordem global.
Sinônimos
impasse