带Java 21虚拟线程的弹簧启动 - 有没有办法优雅地终止?

问题描述 投票:0回答:1

在SB 3.4 + Java 21,当您终止Java过程时,无论任务执行程序类型如何

,但是,如果您通过添加以下方式使用虚拟线程而不是线程池:

spring.threads.virtual.enabled=true

在应用程序中。
如果是这样,是否可以选择防止这种情况,并优雅地关闭?

spring-boot virtual-threads
1个回答
0
投票

虚拟线程的一个副作用是它们是守护程序线程。一个 如果其所有线程都是守护程序线程,JVM将退出。这种行为 例如 保持您的应用程序。如果使用虚拟线程,则调度程序 线程是一个虚拟线程,因此是一个守护程序线程,不会 保持JVM的活力。这不仅会影响安排,而且可以是 其他技术也有案例。保持JVM的运行 案件,建议将属性设置为spring.main.keep-alive 是的。这样可以确保JVM保持活力,即使所有线程都是 虚拟线程

注:我尚未验证这与Spring Boot3.4.x.

一起使用

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.