Answers:
您可以System.exit()用于此目的。
根据oracle的Java 8文档:
public static void exit(int status)终止当前正在运行的Java虚拟机。参数用作状态码;按照惯例,非零状态代码表示异常终止。
此方法在类Runtime中调用exit方法。此方法永远不会正常返回。
该调用
System.exit(n)实际上等效于该调用:
Runtime.getRuntime().exit(n)
System.exit(0);
“ 0”让任何人调用您的程序都知道一切正常。但是,如果由于错误而要退出,则应该System.exit(1);,或使用另一个与特定错误对应的非零数字。
另外,正如其他人提到的那样,请先清理!这涉及关闭文件和其他打开的资源。
System.exit(1)(或其他任何数字)是您是否要指出由于错误而关闭了它。System.exit(0)表示程序正常关闭。您还可以将1更改为任意数字,然后从脚本运行应用程序时,可以确定是否存在错误。
答案是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;也很好,该返回值可防止在系统退出之前运行任何常规代码,否则,您将需要一个标志(i.e. if (!called_exit) { further code after exit statement }
Runtime.getCurrentRumtime().halt(0);
halt:“应格外谨慎地使用此方法。与该exit方法不同,如果启用了退出时终结,则此方法不会导致启动关闭挂钩,并且不会运行未调用的终结器。如果关闭序列已已经启动,则此方法不会等待任何正在运行的关闭挂钩或终结器完成工作。” 简而言之,您不需要使用halt,而是应该使用exit。
System.exit()会做你想要的。但是在大多数情况下,您可能希望退出线程,并使主线程保持活动状态。这样,您可以终止任务,但也可以保持启动另一个任务的能力,而无需重新启动应用程序。
这应该以正确的方式进行:
mainFrame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
mainFrame.addWindowListener(new WindowListener() {
@Override
public void windowClosing(WindowEvent e) {
if (doQuestion("Really want to exit?")) {
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainFrame.dispose();
}
}