diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2024-02-28 21:22:47 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2024-02-28 21:22:47 +0000 |
commit | c10ef07a7da98475a8c1e9bf878fbc69109be7e3 (patch) | |
tree | 6cf80bb4f9fed6caba29225765970e5adf74f157 | |
parent | 706973ba11563a1d9d5c9d5a88e875289710f11f (diff) | |
parent | 1d3e465b59e053a2358cd789645e8d88087d3e5a (diff) | |
download | apache-harmony-simpleperf-release.tar.gz |
Merge "Snap for 11510257 from 92b03ef02b1a217397b4f2223c991114b644ac0f to simpleperf-release" into simpleperf-releasesimpleperf-release
-rw-r--r-- | jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/Events/MonitorContendedEnterAndEnteredDebuggee.java | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/Events/MonitorContendedEnterAndEnteredDebuggee.java b/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/Events/MonitorContendedEnterAndEnteredDebuggee.java index de5b397..53708d4 100644 --- a/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/Events/MonitorContendedEnterAndEnteredDebuggee.java +++ b/jdwp/src/test/java/org/apache/harmony/jpda/tests/jdwp/Events/MonitorContendedEnterAndEnteredDebuggee.java @@ -50,13 +50,27 @@ public class MonitorContendedEnterAndEnteredDebuggee extends SyncDebuggee { Thread.yield(); logWriter.println("main thread: Waiting for second thread to attempt to lock a monitor"); } - + // We think the monitor is contended. synchronizer.sendMessage(JPDADebuggeeSynchronizer.SGNL_READY); // Make sure we're good to finish. synchronizer.receiveMessage(JPDADebuggeeSynchronizer.SGNL_CONTINUE); logWriter.println("--> main thread: finish test"); } + + // Wait for the blocked thread to join. This makes sure we entered the synchronized section + // in the blocked thread and hence the MonitorContentedEntered message should be sent. If we + // don't wait here, there is a possibility we exit the process before the blocked thread + // gets a chance to enter the monitor lock. + boolean done = false; + while (!done) { + try { + thread.join(); + done = true; + } catch(InterruptedException e) { + System.out.println("Thread interrupted when joining, giving another chance"); + } + } } static class BlockedThread extends Thread { |