正确地结束Java命令行应用程序

8
我在想,Java命令行应用程序的main方法结束前是否需要调用System.exit(0);?如果需要,为什么?如果我总是在那里放置0,与让它自己退出有什么区别?有什么没有清理干净的东西吗?
提前感谢。

1
请参见https://dev59.com/IHA65IYBdhLWcg3wogIb。 - Qwerky
2个回答

16
不!您并不总是需要调用 System.exit(0) 来结束Java程序。如果您的代码没有生成任何非守护线程,那么应用程序将在主线程任务完成后自动终止。
如果您的 main 方法生成了一些非守护线程,这些线程仍在进行某些处理,而您的 main 方法已经到达末尾,则应用程序将不会终止,直到这些线程完成。在这种情况下,如果您明确调用 System.exit(0),则应用程序将立即终止并杀死所有线程。
请参考 Thread 的 javadoc,其中提到了详细信息。

2
无需调用 System.exit(),只需从 main() 返回即可。这是退出 Java 程序的常规习惯用法。
通常情况下,调用 System.exit() 用于在应用程序正在进行中终止应用程序(通常意味着由于致命错误而导致的异常终止)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接