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