gpt4 book ai didi

java - System.exit(0) 作为最后一条语句有什么不同吗?

转载 作者:行者123 更新时间:2023-11-30 03:43:44 26 4
gpt4 key购买 nike

Java 1.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的行为是否相同程序执行的各个方面都相同吗?

据我了解,按照惯例,非零状态代码表示异常终止。

最佳答案

A 类“明确”关闭。这意味着,如果有任何非守护线程仍在运行,它们将被显式停止(被告知,而不是消失)。

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

查看 Thread#setDaemon(boolean) 的文档:当唯一运行的线程都是守护线程时,Java 虚拟机退出。”

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

关于java - System.exit(0) 作为最后一条语句有什么不同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26245372/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com