Sobes.tech
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.