From 5d1ac920fdaef5d4ec8f66bb734488cd9660b024 Mon Sep 17 00:00:00 2001 From: jeffhao Date: Thu, 29 Sep 2011 17:41:15 -0700 Subject: Adding old unit tests to test suite. These tests are copied straight over. They'll still run, but they're using the old system. Change-Id: If494519e52ddf858a9febfc55bdae830468cb3c8 --- test/033-class-init-deadlock/src/Main.java | 51 ++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 test/033-class-init-deadlock/src/Main.java (limited to 'test/033-class-init-deadlock/src/Main.java') diff --git a/test/033-class-init-deadlock/src/Main.java b/test/033-class-init-deadlock/src/Main.java new file mode 100644 index 0000000000..27c49220ef --- /dev/null +++ b/test/033-class-init-deadlock/src/Main.java @@ -0,0 +1,51 @@ +// Copyright 2006 The Android Open Source Project + +/** + * This causes most VMs to lock up. + * + * Interrupting threads in class initialization should NOT work. + */ +public class Main { + public static boolean aInitialized = false; + public static boolean bInitialized = false; + + static public void main(String[] args) { + Thread thread1, thread2; + + System.out.println("Deadlock test starting."); + thread1 = new Thread() { public void run() { new A(); } }; + thread2 = new Thread() { public void run() { new B(); } }; + thread1.start(); + thread2.start(); + + try { Thread.sleep(6000); } catch (InterruptedException ie) { } + + System.out.println("Deadlock test interupting threads."); + thread1.interrupt(); + thread2.interrupt(); + System.out.println("Deadlock test main thread bailing."); + System.out.println("A initialized: " + aInitialized); + System.out.println("B initialized: " + bInitialized); + System.exit(0); + } +} + +class A { + static { + System.out.println("A initializing..."); + try { Thread.sleep(3000); } catch (InterruptedException ie) { } + new B(); + System.out.println("A initialized"); + Main.aInitialized = true; + } +} + +class B { + static { + System.out.println("B initializing..."); + try { Thread.sleep(3000); } catch (InterruptedException ie) { } + new A(); + System.out.println("B initialized"); + Main.bInitialized = true; + } +} -- cgit v1.2.3