Sobes.tech
Middle

¿Qué es un bloqueo mutuo?

sobes.tech AI

Respuesta de la IA

Bloqueo mutuo (deadlock) — es una situación en una aplicación multihilo en la que dos o más hilos bloquean mutuamente, esperando liberar recursos que otro hilo ha ocupado. Como resultado, ninguno de los hilos puede continuar.

Ejemplo de una situación clásica de deadlock:

  • El hilo A adquiere el recurso 1 y espera el recurso 2.
  • El hilo B adquiere el recurso 2 y espera el recurso 1.

Ambos hilos quedan bloqueados indefinidamente.

Para prevenir deadlocks, se aplican:

  • Un orden estricto en la adquisición de recursos.
  • Tiempos de espera (timeout) al esperar bloqueos.
  • Uso de algoritmos no bloqueantes.

Ejemplo en Java:

synchronized(resource1) {
    synchronized(resource2) {
        // trabajo con los recursos
    }
}

Si otro hilo intenta adquirir los recursos en orden inverso, puede ocurrir un deadlock.