quarta-feira, 8 de maio de 2019

Laboratório Deadlock- Sincronização de Procesos

public class TestThread {
   public static Object Lock1 = new Object();
   public static Object Lock2 = new Object();

   public static void main(String args[]) {
      ThreadDemo1 T1 = new ThreadDemo1();
      ThreadDemo2 T2 = new ThreadDemo2();
      T1.start();
      T2.start();
   }

   private static class ThreadDemo1 extends Thread {
      public void run() {
         synchronized (Lock1) {
            System.out.println("Thread 1: Adquirindo lock 1...");

            try { Thread.sleep(10); }
            catch (InterruptedException e) {}
            System.out.println("Thread 1: Esperando for lock 2...");

            synchronized (Lock2) {
               System.out.println("Thread 1: Adquirindo lock 1 & 2...");
            }
         }
      }
   }
   private static class ThreadDemo2 extends Thread {
      public void run() {
         synchronized (Lock2) {
            System.out.println("Thread 2: Adquirindo lock 2...");

            try { Thread.sleep(10); }
            catch (InterruptedException e) {}
            System.out.println("Thread 2: Esperando for lock 1...");

            synchronized (Lock1) {
               System.out.println("Thread 2: Adquirindo lock 1 & 2...");
            }
         }
      }
   } 
}

Nenhum comentário:

Postar um comentário

 
Visitas