这是一个典型的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>
)来找出线程的状态。那可以告诉你更多。