知乎专栏 |
package cn.netkiller.thread; import static java.lang.Thread.*; public class VirtualThreadsTest { public static void main(String[] args) throws InterruptedException { var virtualThread = startVirtualThread(() -> System.out.println("Hello from the virtual thread")); virtualThread.join(); } }
运行演示
neo@MacBook-Pro-M2 thread % java --source 20 --enable-preview VirtualThreadsTest.java 注: VirtualThreadsTest.java 使用 Java SE 20 的预览功能。 注: 有关详细信息,请使用 -Xlint:preview 重新编译。 Hello from the virtual thread
import java.time.Duration; import java.util.concurrent.Executors; import java.util.stream.IntStream; public class Main { public static void main(String[] args) { try (var executor = Executors.newVirtualThreadPerTaskExecutor()) { IntStream.range(0, 10000).forEach(i -> { executor.submit(() -> { Thread.sleep(Duration.ofSeconds(1)); return i; }); }); } } }
import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class VirtualThreadExample { public static void main(String[] args) { ExecutorService executor = Executors.newVirtualThreadPerTaskExecutor(); executor.submit(() -> { System.out.println(Thread.currentThread().getName()) }); executor.shutdown(); } }
Thread.ofVirtual().start(Runnable); Thread.ofVirtual().unstarted(Runnable);
Thread.ofVirtual().start(Runnable); Thread.ofVirtual().unstarted(Runnable);