Sobes.tech
Middle

O que é um deadlock?

sobes.tech IA

Resposta da IA

Deadlock (bloqueio mútuo) — é uma situação numa aplicação multithread em que dois ou mais threads bloqueiam-se mutuamente, esperando libertar recursos que outro thread ocupou. Como resultado, nenhum dos threads consegue continuar.

Exemplo de uma situação clássica de deadlock:

  • O thread A adquire o recurso 1 e espera pelo recurso 2.
  • O thread B adquire o recurso 2 e espera pelo recurso 1.

Ambos os threads ficam bloqueados indefinidamente.

Para prevenir deadlocks, aplicam-se:

  • Uma ordem estrita na aquisição de recursos.
  • Tempos limite (timeout) ao esperar por bloqueios.
  • Uso de algoritmos não bloqueantes.

Exemplo em Java:

synchronized(resource1) {
    synchronized(resource2) {
        // trabalho com os recursos
    }
}

Se outro thread tentar adquirir os recursos na ordem inversa, pode ocorrer um deadlock.