如何使用代码最好的退出Java应用程序?
如何使用代码最好的退出Java应用程序?
您可以使用System.exit()
来实现此目的。
根据Oracle Java 8文档:
public static void exit(int status)
终止当前正在运行的Java虚拟机。参数作为状态码;按照惯例,非零状态码表示异常终止。
该方法在类Runtime中调用退出方法。该方法从不正常返回。
System.exit(n)
调用实际上等同于调用:
Runtime.getRuntime().exit(n)
System.exit(0);
"0" 表示你的程序执行正常。但如果因为错误而退出,你应该使用 System.exit(1);
或其他对应特定错误的非零数字。
此外,就像其他人提到的那样,先进行清理工作!这包括关闭文件和其他开放资源。
System.exit(1)
(或任何其他数字)表示程序因错误而关闭。System.exit(0)
表示程序正常关闭。你还可以将1更改为任何你喜欢的数字,这样当你从脚本中运行应用程序时,你可以确定是否发生了错误。 - StormFooSystem.exit(int i)
是用于终止Java虚拟机的方法,但我建议将其包含在更通用的shutdown()
方法中,该方法中还包括“清理”步骤,例如关闭套接字连接、文件描述符,然后才使用System.exit(x)
结束程序。
System.exit()
通常不是最好的方法,但这取决于你的应用程序。
结束应用程序的常规方式是退出main()
方法。当有其他非守护线程运行时,这种方式不起作用,这在具有图形用户界面(AWT、Swing等)的应用程序中很常见。对于这些应用程序,您要么找到一种方法来结束GUI事件循环(不知道是否可以在AWT或Swing中实现),要么调用System.exit()
。
使用dispose();
是关闭程序的一种非常有效的方法。
我发现使用System.exit(x)
会重置交互面板,如果你需要其中的一些信息,那么所有信息都会消失。
我同意Jon的观点,让你的应用程序对某些事件做出反应并调用System.exit()。
请确保:
这个问题有两个简单的答案。
这是“专业方式”:
//This just terminates the program.
System.exit(0);
这是一种更加笨拙的方式:
//This just terminates the program, just like System.exit(0).
return;
System.exit(0); return;
is good too, the return prevents any ruther code from being run before the System can exit, otherwise you'd need a flag (.. i.e. if (!called_exit) { further code after exit statement }
- ycompRuntime.getCurrentRumtime().halt(0);
halt
的Javadoc中:“应该极度谨慎地使用此方法。与exit
方法不同,此方法不会启动关闭挂钩,并且如果已启用退出时终结,则不会运行未调用的终结器。如果关闭序列已经启动,则此方法不会等待任何正在运行的关闭挂钩或终结器完成其工作。”简而言之,您不应该需要使用halt
,而应该使用exit
。 - Erwin BolwidtSystem.exit()
会实现你想要的功能。但在大多数情况下,你可能只想退出一个线程,而保留主线程的运行。这样做可以终止一个任务,同时又能够在不重启应用程序的情况下启动另一个任务。