Middle
Cos'è un deadlock?
sobes.tech AI
Risposta dell'AI
Deadlock (interblocco reciproco) — è una situazione in un'applicazione multithread in cui due o più thread si bloccano reciprocamente, aspettando di liberare risorse occupate dall'altro thread. Di conseguenza, nessuno dei thread può continuare.
Esempio di una situazione classica di deadlock:
- Il thread A acquisisce la risorsa 1 e aspetta la risorsa 2.
- Il thread B acquisisce la risorsa 2 e aspetta la risorsa 1.
Entrambi i thread rimangono bloccati indefinitamente.
Per prevenire i deadlock si applicano:
- Un ordine rigoroso nell'acquisizione delle risorse.
- Timeout durante l'attesa di blocchi.
- Uso di algoritmi non bloccanti.
Esempio in Java:
synchronized(resource1) {
synchronized(resource2) {
// lavoro con le risorse
}
}
Se un altro thread tenta di acquisire le risorse in ordine inverso, può verificarsi un deadlock.