因为使用线程的成本很高,所以才会有了虚拟线程,它是用户态线程,成本是相当低廉的,调度也完全由用户进行控制(JDK 中的调度器),它同样可以进行阻塞,但不用阻塞操作系统线程,充分提高了硬件利用率,高并发也上了一个量级,从而实现了高吞吐量。
Java 19 初次引入虚拟线程,在 Java 21 中正式转正生产可用。虚拟线程在Spring WebFlux和Project Reactor中被广泛用于异步和非阻塞IO操作。
Spring Boot 3.1.5 做了对 Java 21 的兼容,Spring Boot 3.2.0 正式可以支持 Java 21 中的虚拟线程了,只需要添加以下配置即可:
spring.threads.virtual.enabled = true
在Spring Boot中,创建虚拟线程(也称为虚拟线程或协程)可以使用Spring WebFlux和Project Reactor。以下是一个简单的例子,展示了如何在Spring Boot应用程序中创建和使用虚拟线程。
首先,确保在pom.xml中添加了Spring WebFlux和Reactor的依赖:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
<dependency>
<groupId>io.projectreactor</groupId>
<artifactId>reactor-core</artifactId>
</dependency>
</dependencies>
然后,创建一个简单的RestController来演示如何使用虚拟线程:
本文系作者在时代Java发表,未经许可,不得转载。
如有侵权,请联系nowjava@qq.com删除。