Interbloqueo
El problema del interbloqueo
Interbloqueo (deadlock)
El problema del interbloqueo (punto 6.3.5)
Ejemplo de interbloqueo
public class DeadlockExample { public static Object Lock1 = new Object(); public static Object Lock2 = new Object(); public static void main(String args[]) { WorkerThread1 t1 = new WorkerThread1(); WorkerThread2 t2 = new WorkerThread2(); t1.start(); t2.start(); } private static class WorkerThread1 extends Thread { public void run() { synchronized (Lock1) { System.out.println("Thread 1: Holding lock 1..."); try { Thread.sleep(1000); } catch (InterruptedException e) { System.out.println(e.getStackTrace()); } System.out.println("Thread 1: Waiting for lock 2..."); synchronized (Lock2) { System.out.println("Thread 1: Holding lock 1 & 2..."); } } } } private static class WorkerThread2 extends Thread { public void run() { synchronized (Lock2) { System.out.println("Thread 2: Holding lock 2..."); try { Thread.sleep(1000); } catch (InterruptedException e) { System.out.println(e.getStackTrace()); } System.out.println("Thread 2: Waiting for lock 1..."); synchronized (Lock1) { System.out.println("Thread 2: Holding lock 1 & 2..."); } } } } }
Depuración y documentación
Deja una respuesta
Lo siento, debes estar conectado para publicar un comentario.