diff --git a/pom.xml b/pom.xml index 6025da2ed..69eca20fd 100644 --- a/pom.xml +++ b/pom.xml @@ -16,7 +16,7 @@ 3.9.0 UTF-8 UTF-8 - 17 + 21 3.1.1 3.0.4 1.2.23 diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/VirtualThreadConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/VirtualThreadConfig.java new file mode 100644 index 000000000..c61d24d30 --- /dev/null +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/VirtualThreadConfig.java @@ -0,0 +1,30 @@ +package com.ruoyi.framework.config; + +import org.springframework.boot.web.embedded.tomcat.TomcatProtocolHandlerCustomizer; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import java.util.concurrent.Executors; +import java.util.concurrent.ThreadFactory; + +@Configuration +public class VirtualThreadConfig { + + /** + * 配置虚拟线程池:JDK 21 新增 Executors.newVirtualThreadPerTaskExecutor() + * 特性:1个任务对应1个虚拟线程,无需手动设置核心线程数/最大线程数 + */ + @Bean + public TomcatProtocolHandlerCustomizer protocolHandlerVirtualThreadExecutorCustomizer() { + // 1. 创建自定义虚拟线程工厂并指定名称前缀 + ThreadFactory virtualThreadFactory = Thread.ofVirtual() + .name("virtual-api-", 1) // 前缀为"virtual-api-",编号从1开始 + .factory(); + + // 2. 使用上面创建的线程工厂初始化执行器 + return protocolHandler -> protocolHandler.setExecutor( + Executors.newThreadPerTaskExecutor(virtualThreadFactory) + ); + } + +}