From cb760efebbaacf4851e9f70e97ff2f88d53e36e1 Mon Sep 17 00:00:00 2001 From: guoba Date: Fri, 17 Oct 2025 12:18:54 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8D=87=E7=BA=A7JDK=E5=88=B021=E5=BC=95?= =?UTF-8?q?=E5=85=A5=E8=99=9A=E6=8B=9F=E7=BA=BF=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- .../framework/config/VirtualThreadConfig.java | 30 +++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/config/VirtualThreadConfig.java 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) + ); + } + +}