JDK21-虚拟线程
·
JDK21引入,轻量级,适用于高并发IO密集型场景
传统线程弊端:
- 创建成本高
- 内存占用大(默认栈空间约1MB)
- 数量有限
当需要大量进行IO时,线程大部分时间处于等待I/O的阻塞状态,什么也没有去干,从而浪费了系统大量的资源。这种线程叫做“平台线程”
有了解过操作系统的同学应该知道,当线程处于阻塞状态时,我们可以选择挂起线程,并切换用户级线程,可以避免频繁的内核线程切换开销,从而提高并发能力。接下来我们学习的虚拟线程与该用户线程的使用也有许多相似之处。
虚拟线程:
使用方法:
Thread.startVirtualThread(() -> {
System.out.println("hello");
});
ExecutorService executor =
Executors.newVirtualThreadPerTaskExecutor();
基本原理:
JVM发现当前线程正在阻塞,会选择立即挂起虚拟线程,释放底层平台线程,再让当前的平台现场去干别的工作。这样当进行IO密集型工作时,使用虚拟线程能大幅提升系统性能。
更多推荐


所有评论(0)