< prev index next >

test/jdk/java/lang/management/ThreadMXBean/VirtualThreads.java

Print this page
@@ -23,20 +23,18 @@
  
  /**
   * @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
   */
  

@@ -76,12 +74,13 @@
              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);

@@ -95,13 +94,14 @@
      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 {

@@ -151,11 +151,15 @@
          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);
          }
      }

@@ -172,11 +176,15 @@
              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 >