Java System.exit(0)作为最后一条语句是否会产生影响?

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

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..");
    }
}
如果
System.exit(0)
System.exit(1)
是要执行的程序的最后一条语句,那么类A和类B在程序执行的所有方面的行为是否都相同

我知道按照惯例,非零状态代码表示异常终止

  • 如果未使用
    System.exit()
    明确指定退出代码,则默认退出代码为
    0
  • 我不确定这一点,但它可能会影响
    File.deleteOnExit()
    调用
  • Systeme.exit()
    立即终止程序,即使其他非守护进程线程仍在运行。在
    ClassB
    的情况下,这些线程和程序将继续运行,直到所有非守护进程线程退出
A类
“显式”关闭。这意味着,如果有任何非守护进程线程仍在运行,它们将被显式停止(被告知停止,而不是消失)

Class B
将“隐式”关闭,查看主线程如何是在这种情况下运行的唯一非守护进程线程,在print语句之后,它将结束

查看以下文档:“当运行的线程都是守护进程线程时,Java虚拟机将退出”

最后,应用程序被关闭了,所以我想除了第一个被告知关闭,第二个“消失”之外,这并没有什么区别。最好是让线消失,而不是让它消失。少走一步;您也不需要在
exit(int)
方法中执行任何额外的语句。该方法的代码可在此处找到: