什么原因导致java应用程序无法退出? 最后一行代码打印一条消息,然后在按下“停止”按钮之前它不会退出。
代码本身不会加入任何其他线程;并且在结束大括号之前的最后一行代码是
System.out.println("ok");
然后打印“确定”,然后暂停。
答案 0 :(得分:5)
有可能某事正在创建一个新的非守护程序线程。
如果您在调试器中运行并“暂停”应用程序,您应该会看到仍在运行的各种线程。
基本上,JVM只会在没有非守护进程线程的情况下终止。
答案 1 :(得分:2)
Java应用程序在其main方法返回时不会停止。它在调用System.exit
时退出,或者当没有非守护程序线程运行时退出。因此,如果main方法启动Swing或AWT GUI,然后返回,则启动事件调度线程,并且应用程序继续运行。同样,如果它启动后台线程并且该线程不是守护进程,则后台线程会使程序保持运行,直到调用System.exit为止。
答案 2 :(得分:0)
非守护程序线程肯定是原因。即使没有明确创建一个,如果要启动AWT / Swing GUI,至少会自动创建事件派发线程。在这种情况下,请使用System.exit(value)
。