java - 为什么SpringApplication启动后不立即终止?

标签 java spring spring-boot

这是一个典型的 SpringApplication 实例:

public class MyService {
    public static void main(String[] args) throws Exception {
        SpringApplication app = new SpringApplication(MyService.class);
        ApplicationContext ctx = app.run(args);
    }
}

由于 app.run(args) 是一个非阻塞调用,因此该应用程序的 main 方法在调用后立即返回。我一直认为应用程序会在您从 main 返回时终止。

为什么 SpringApplication 继续运行,即使我们已经从 main 返回?

最佳答案

JVM 终止 when the last non-daemon thread完成。您的应用程序似乎正在创建不会终止的线程。

在 Unix 上,您可以通过将信号 3 ( kill -3 <java-pid> ) 发送到 get a thread dump 来了解线程的状态。在输出上。这可以告诉您更多信息。

关于java - 为什么SpringApplication启动后不立即终止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32238564/

相关文章:

java - Hibernate 和 Spring DataSourceTransactionManager

spring - 如何在Spring Boot应用中为@Configuration注解的类编写单元测试用例

java - Linux 和 java : File is being created but text is not written

java - 某些字符的正则表达式

database - 将 Log4J 写入数据库

java - 由 : org. springframework.data.mapping.PropertyReferenceException: No property findAll found for type User - Redis 引起

java - Spring事务抛出异常后不回滚

Java 8 Stream - 标记 "("出现语法错误,此标记后应有表达式

java - 如何在 Java Swing 中控制 JTextFields 的宽度?

java - @Lookup 方法不适用于 spring mvc 4.1