为什么SpringApplication在启动后不会立即终止?

时间:2015-08-26 23:56:57

标签: 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

1 个答案:

答案 0 :(得分:2)

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

在Unix上,你可以通过在输出上发送信号3(urlparse3.parse_url)到get a thread dump来找出线程的状态。这可以告诉你更多。