调查问题 在 Java 21 上使用虚拟线程时,Spring Boot 应用程序会卡住 我发现在 Spring Boot 应用程序中启用虚拟线程,其 Tomcat 将使用
ForkJoinPool
创建 parallelism = 20
。事实上,这意味着只有 20 个载体线程在虚拟线程被固定时可能会导致问题。
那么Spring Boot中是否有任何属性允许配置Tomcat的
ForkJoinPool
?我试过了
server:
tomcat:
threads:
max: 110
但这没有帮助,而且似乎只适用于平台线程。
目前看来无法通过 Spring Boot 的
application.yml
进行配置。据我从调试中了解到,执行此操作的唯一方法是在 JVM选项中指定
-Djdk.virtualThreadScheduler.parallelism=n
。
但这显然会影响整个应用程序,而不仅仅是一个特定的
ForkJoinPool
。