Java System.exit(0)作为最后一条语句是否会产生影响?
Java1.5+ A班和B班有何不同Java System.exit(0)作为最后一条语句是否会产生影响?,java,Java,Java1.5+ A班和B班有何不同 public class A { public static void main(String args[]) { System.out.println("Ending.."); System.exit(0); } } public class B { public static void main(String args[]) { System.out.println("Ending
public class A {
public static void main(String args[]) {
System.out.println("Ending..");
System.exit(0);
}
}
public class B {
public static void main(String args[]) {
System.out.println("Ending..");
}
}
如果System.exit(0)
或System.exit(1)
是要执行的程序的最后一条语句,那么类A和类B在程序执行的所有方面的行为是否都相同
我知道按照惯例,非零状态代码表示异常终止 - 如果未使用
明确指定退出代码,则默认退出代码为System.exit()
0
- 我不确定这一点,但它可能会影响
调用File.deleteOnExit()
立即终止程序,即使其他非守护进程线程仍在运行。在Systeme.exit()
的情况下,这些线程和程序将继续运行,直到所有非守护进程线程退出ClassB
A类
“显式”关闭。这意味着,如果有任何非守护进程线程仍在运行,它们将被显式停止(被告知停止,而不是消失)
Class B
将“隐式”关闭,查看主线程如何是在这种情况下运行的唯一非守护进程线程,在print语句之后,它将结束
查看以下文档:“当运行的线程都是守护进程线程时,Java虚拟机将退出”
最后,应用程序被关闭了,所以我想除了第一个被告知关闭,第二个“消失”之外,这并没有什么区别。最好是让线消失,而不是让它消失。少走一步;您也不需要在exit(int)
方法中执行任何额外的语句。该方法的代码可在此处找到: