这是一个典型的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上,您可以通过在输出上向get a thread dump发送信号3(kill -3 <java-pid>)来找出线程的状态。那可以告诉你更多。

07-24 19:24