主要方法不会返回

时间:2011-09-01 12:17:12

标签: java

什么原因导致java应用程序无法退出? 最后一行代码打印一条消息,然后在按下“停止”按钮之前它不会退出。

代码本身不会加入任何其他线程;并且在结束大括号之前的最后一行代码是

System.out.println("ok");

然后打印“确定”,然后暂停。

3 个答案:

答案 0 :(得分:5)

有可能某事正在创建一个新的非守护程序线程。

如果您在调试器中运行并“暂停”应用程序,您应该会看到仍在运行的各种线程。

基本上,JVM只会在没有非守护进程线程的情况下终止。

答案 1 :(得分:2)

Java应用程序在其main方法返回时不会停止。它在调用System.exit时退出,或者当没有非守护程序线程运行时退出。因此,如果main方法启动Swing或AWT GUI,然后返回,则启动事件调度线程,并且应用程序继续运行。同样,如果它启动后台线程并且该线程不是守护进程,则后台线程会使程序保持运行,直到调用System.exit为止。

答案 2 :(得分:0)

非守护程序线程肯定是原因。即使没有明确创建一个,如果要启动AWT / Swing GUI,至少会自动创建事件派发线程。在这种情况下,请使用System.exit(value)