Appearance
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);
}
}