Another deadlock demo : Deadlock « Threads « Java






Another deadlock demo

Another deadlock demo
 

public class AnotherDeadLock {
  public static void main(String[] args) {
    final Object resource1 = "resource1";
    final Object resource2 = "resource2";
    // t1 tries to lock resource1 then resource2
    Thread t1 = new Thread() {
      public void run() {
        // Lock resource 1
        synchronized (resource1) {
          System.out.println("Thread 1: locked resource 1");

          try {
            Thread.sleep(50);
          } catch (InterruptedException e) {
          }

          synchronized (resource2) {
            System.out.println("Thread 1: locked resource 2");
          }
        }
      }
    };

    // t2 tries to lock resource2 then resource1
    Thread t2 = new Thread() {
      public void run() {
        synchronized (resource2) {
          System.out.println("Thread 2: locked resource 2");

          try {
            Thread.sleep(50);
          } catch (InterruptedException e) {
          }

          synchronized (resource1) {
            System.out.println("Thread 2: locked resource 1");
          }
        }
      }
    };

    // If all goes as planned, deadlock will occur,
    // and the program will never exit.
    t1.start();
    t2.start();
  }
}
           
         
  








Related examples in the same category

1.Demonstrates how deadlock can be hidden in a program
2.ReentrantLock: test for deadlocksReentrantLock: test for deadlocks
3.Deadlock DetectingDeadlock Detecting
4.Using interrupt() to break out of a blocked thread.Using interrupt() to break out of a blocked thread.
5.Deadlock Detector
6.DeadLock Detector 2