Home | History | Annotate | Download | only in src
      1 // Copyright 2006 The Android Open Source Project
      2 
      3 /**
      4  * This causes most VMs to lock up.
      5  *
      6  * Interrupting threads in class initialization should NOT work.
      7  */
      8 public class Main {
      9     public static boolean aInitialized = false;
     10     public static boolean bInitialized = false;
     11 
     12     static public void main(String[] args) {
     13         Thread thread1, thread2;
     14 
     15         System.out.println("Deadlock test starting.");
     16         thread1 = new Thread() { public void run() { new A(); } };
     17         thread2 = new Thread() { public void run() { new B(); } };
     18         thread1.start();
     19         thread2.start();
     20 
     21         try { Thread.sleep(6000); } catch (InterruptedException ie) { }
     22 
     23         System.out.println("Deadlock test interupting threads.");
     24         thread1.interrupt();
     25         thread2.interrupt();
     26         System.out.println("Deadlock test main thread bailing.");
     27         System.out.println("A initialized: " + aInitialized);
     28         System.out.println("B initialized: " + bInitialized);
     29         System.exit(0);
     30     }
     31 }
     32 
     33 class A {
     34     static {
     35         System.out.println("A initializing...");
     36         try { Thread.sleep(3000); } catch (InterruptedException ie) { }
     37         new B();
     38         System.out.println("A initialized");
     39         Main.aInitialized = true;
     40     }
     41 }
     42 
     43 class B {
     44     static {
     45         System.out.println("B initializing...");
     46         try { Thread.sleep(3000); } catch (InterruptedException ie) { }
     47         new A();
     48         System.out.println("B initialized");
     49         Main.bInitialized = true;
     50     }
     51 }
     52 
     53