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.