< prev index next > test/jdk/java/lang/management/ThreadMXBean/VirtualThreads.java
Print this page
/**
* @test id=default
* @bug 8284161 8290562 8303242
* @summary Test java.lang.management.ThreadMXBean with virtual threads
- * @enablePreview
* @modules java.base/java.lang:+open java.management
* @library /test/lib
* @run junit/othervm VirtualThreads
*/
/**
* @test id=no-vmcontinuations
* @requires vm.continuations
- * @enablePreview
* @modules java.base/java.lang:+open java.management
* @library /test/lib
* @run junit/othervm -XX:+UnlockExperimentalVMOptions -XX:-VMContinuations VirtualThreads
*/
ThreadInfo[] infos = bean.dumpAllThreads(false, false, maxDepth);
Set<Long> tids = Arrays.stream(infos)
.map(ThreadInfo::getThreadId)
.collect(Collectors.toSet());
- // current thread should be included
- assertTrue(tids.contains(Thread.currentThread().threadId()));
+ // if current thread is a platform thread then it should be included
+ boolean expected = !Thread.currentThread().isVirtual();
+ assertEquals(expected, tids.contains(Thread.currentThread().threadId()));
// virtual thread should not be included
assertFalse(tids.contains(vthread.threadId()));
} finally {
LockSupport.unpark(vthread);
void testGetAllThreadIds() {
Thread vthread = Thread.startVirtualThread(LockSupport::park);
try {
long[] tids = ManagementFactory.getThreadMXBean().getAllThreadIds();
- // current thread should be included
+ // if current thread is a platform thread then it should be included
+ boolean expected = !Thread.currentThread().isVirtual();
long currentTid = Thread.currentThread().threadId();
- assertTrue(Arrays.stream(tids).anyMatch(tid -> tid == currentTid));
+ assertEquals(expected, Arrays.stream(tids).anyMatch(tid -> tid == currentTid));
// virtual thread should not be included
long vtid = vthread.threadId();
assertFalse(Arrays.stream(tids).anyMatch(tid -> tid == vtid));
} finally {
try {
long tid0 = Thread.currentThread().threadId();
long tid1 = vthread.threadId();
long[] tids = new long[] { tid0, tid1 };
ThreadInfo[] infos = ManagementFactory.getThreadMXBean().getThreadInfo(tids, maxDepth);
- assertEquals(tid0, infos[0].getThreadId());
+ if (Thread.currentThread().isVirtual()) {
+ assertNull(infos[0]);
+ } else {
+ assertEquals(tid0, infos[0].getThreadId());
+ }
assertNull(infos[1]);
} finally {
LockSupport.unpark(vthread);
}
}
long tid0 = Thread.currentThread().threadId();
long tid1 = vthread.threadId();
long[] tids = new long[] { tid0, tid1 };
ThreadMXBean bean = ManagementFactory.getThreadMXBean();
ThreadInfo[] infos = bean.getThreadInfo(tids, false, false, maxDepth);
- assertEquals(tid0, infos[0].getThreadId());
+ if (Thread.currentThread().isVirtual()) {
+ assertNull(infos[0]);
+ } else {
+ assertEquals(tid0, infos[0].getThreadId());
+ }
assertNull(infos[1]);
} finally {
LockSupport.unpark(vthread);
}
}
< prev index next >