diff --git a/test/java/lang/management/ThreadMXBean/SynchronizerDeadlock.java b/test/java/lang/management/ThreadMXBean/SynchronizerDeadlock.java index 2a1441cf8cb4234aa0ceda1f0b67ec841ff521ab..cf2ba35c553d8d295fc8992008f4b794eb229d72 100644 --- a/test/java/lang/management/ThreadMXBean/SynchronizerDeadlock.java +++ b/test/java/lang/management/ThreadMXBean/SynchronizerDeadlock.java @@ -83,11 +83,24 @@ public class SynchronizerDeadlock { void waitUntilDeadlock() { barr.await(); - // sleep a little while to wait until threads are blocked. - try { - Thread.sleep(100); - } catch (InterruptedException e) { - // ignore + + for (int i=0; i < 100; i++) { + // sleep a little while to wait until threads are blocked. + try { + Thread.sleep(100); + } catch (InterruptedException e) { + // ignore + } + boolean retry = false; + for (Thread t: dThreads) { + if (t.getState() == Thread.State.RUNNABLE) { + retry = true; + break; + } + } + if (!retry) { + break; + } } } diff --git a/test/java/lang/management/ThreadMXBean/SynchronizerLockingThread.java b/test/java/lang/management/ThreadMXBean/SynchronizerLockingThread.java index 83e07a88c86b0652f46bfa8aaa55f14bd13da204..803d7917d1974bc08b2667ab80db923c3feea3ba 100644 --- a/test/java/lang/management/ThreadMXBean/SynchronizerLockingThread.java +++ b/test/java/lang/management/ThreadMXBean/SynchronizerLockingThread.java @@ -28,7 +28,7 @@ * monitors. * @author Mandy Chung * - * @build ThreadDump + * @build ThreadDump Utils */ import java.lang.management.*; @@ -63,6 +63,9 @@ public class SynchronizerLockingThread extends Thread { throw new RuntimeException(e); } } + + Utils.waitForBlockWaitingState(t1); + Utils.waitForBlockWaitingState(t2); } static long[] getThreadIds() {