< prev index next >
test/hotspot/jtreg/runtime/handshake/HandshakeDirectTest.java
Print this page
@@ -22,10 +22,11 @@
*
*/
/*
* @test HandshakeDirectTest
+ * @bug 8240918
* @summary This test tries to stress direct handshakes between threads while suspending them.
* @library /testlibrary /test/lib
* @build HandshakeDirectTest
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+SafepointALot -XX:BiasedLockingDecayTime=100000000 -XX:BiasedLockingBulkRebiasThreshold=1000000 -XX:BiasedLockingBulkRevokeThreshold=1000000 HandshakeDirectTest
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:GuaranteedSafepointInterval=10 -XX:+HandshakeALot -XX:+SafepointALot -XX:BiasedLockingDecayTime=100000000 -XX:BiasedLockingBulkRebiasThreshold=1000000 -XX:BiasedLockingBulkRevokeThreshold=1000000 HandshakeDirectTest
@@ -58,12 +59,13 @@
}
handshakeSem[me].release();
}
// Handshake directly some other worker
- int handshakee = ThreadLocalRandom.current().nextInt(0, WORKING_THREADS-1);
+ int handshakee = ThreadLocalRandom.current().nextInt(0, WORKING_THREADS - 1);
if (handshakee == me) {
+ // Pick another thread instead of me.
handshakee = handshakee != 0 ? handshakee - 1 : handshakee + 1;
}
handshakeSem[handshakee].acquire();
if (isBiased[handshakee]) {
// Revoke biased lock
@@ -106,11 +108,11 @@
// Fire-up suspend-resume thread
Thread suspendResumeThread = new Thread() {
@Override
public void run() {
while (true) {
- int i = ThreadLocalRandom.current().nextInt(0, WORKING_THREADS-1);
+ int i = ThreadLocalRandom.current().nextInt(0, WORKING_THREADS - 1);
workingThreads[i].suspend();
try {
Thread.sleep(1); // sleep for 1 ms
} catch(InterruptedException ie) {
}
< prev index next >