这是一个典型的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
?
答案 0 :(得分:2)
JVM终止when the last non-daemon thread完成。您的应用程序似乎正在创建不终止的线程。
在Unix上,你可以通过在输出上发送信号3(urlparse3.parse_url
)到get a thread dump来找出线程的状态。这可以告诉你更多。