VirtualThreadConfig.java 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package com.kym.common.config;
  2. import lombok.extern.slf4j.Slf4j;
  3. import org.springframework.context.annotation.Bean;
  4. import org.springframework.context.annotation.Configuration;
  5. import java.util.concurrent.ExecutorService;
  6. import java.util.concurrent.Executors;
  7. /**
  8. * 虚拟线程配置类
  9. * Java 21 Virtual Threads 统一配置
  10. *
  11. * @author skyline
  12. * @date 2026-01-11
  13. */
  14. @Configuration
  15. @Slf4j
  16. public class VirtualThreadConfig {
  17. /**
  18. * 创建虚拟线程执行器用于异步任务
  19. * 虚拟线程非常轻量,可以创建数百万个而不会耗尽系统资源
  20. */
  21. @Bean("virtualThreadExecutor")
  22. public ExecutorService virtualThreadExecutor() {
  23. log.info("初始化虚拟线程执行器 (Virtual Thread Executor)");
  24. return Executors.newVirtualThreadPerTaskExecutor();
  25. }
  26. /**
  27. * 创建命名的虚拟线程执行器,便于追踪和调试
  28. */
  29. @Bean("namedVirtualThreadExecutor")
  30. public ExecutorService namedVirtualThreadExecutor() {
  31. log.info("初始化命名虚拟线程执行器 (Named Virtual Thread Executor)");
  32. return Executors.newThreadPerTaskExecutor(Thread.ofVirtual()
  33. .name("vt-", 0)
  34. .factory());
  35. }
  36. /**
  37. * 为消息处理创建专用的虚拟线程执行器
  38. */
  39. @Bean("messageVirtualThreadExecutor")
  40. public ExecutorService messageVirtualThreadExecutor() {
  41. log.info("初始化消息处理虚拟线程执行器 (Message Virtual Thread Executor)");
  42. return Executors.newThreadPerTaskExecutor(Thread.ofVirtual()
  43. .name("vt-msg-", 0)
  44. .factory());
  45. }
  46. /**
  47. * 为调度任务创建专用的虚拟线程执行器
  48. */
  49. @Bean("schedulerVirtualThreadExecutor")
  50. public ExecutorService schedulerVirtualThreadExecutor() {
  51. log.info("初始化调度虚拟线程执行器 (Scheduler Virtual Thread Executor)");
  52. return Executors.newThreadPerTaskExecutor(Thread.ofVirtual()
  53. .name("vt-scheduler-", 0)
  54. .factory());
  55. }
  56. }