Skip to content

JDK21 VirtualThread

  • 虚拟线程是JDK21的一个新特性,它是一种轻量级的线程,可以在JVM中创建数百万个线程,而不会导致内存消耗过多。
  • 虚拟线程是通过Thread.startVirtualThread()方法创建的,它们不会被分配到操作系统的线程池中,而是由JVM自己的线程调度器进行调度。
  • 虚拟线程的生命周期是由JVM自己的线程调度器进行管理,不需要用户手动管理。
  • 虚拟线程的使用示例如下:
java
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;

public class VirtualThreadDemo {
    public static void main(String[] args) throws InterruptedException {
        // 创建一个线程容器
        Set<String> threadPoolName = ConcurrentHashMap.newKeySet();

        // 创建1000000个线程
        for (int i = 0; i < 1000000; i++) {
            Thread.startVirtualThread(() -> {
                String name = Thread.currentThread().toString();
                String poolName = name.split("@")[1];
                System.out.println("create a virtual thread in "+poolName);
                threadPoolName.add(poolName);
            });
        }
        Thread.sleep(5000);
        // 输出线程池名称
        // 可以发现 jvm 根据cpu虚拟核数创建线程池
        threadPoolName.forEach(System.out::println);
    }
}