[英]How to quit a java app from within the program
使用代碼退出Java應用程序的最佳方法是什么?
您可以使用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(int i)
,但我會將其包含在更通用的shutdown()
方法中,其中您還將包括“清理”步驟,關閉套接字連接,文件描述符, 然后退出System.exit(x)
。
System.exit()
通常不是最好的方法,但它取決於您的應用程序。
結束應用程序的常用方法是退出main()
方法。 當運行其他非deamon線程時,這不起作用,這對於具有圖形用戶界面(AWT,Swing等)的應用程序來說是常見的。 對於這些應用程序,您要么找到結束GUI事件循環的方法(不知道是否可以使用AWT或Swing),或者調用System.exit()
。
使用dispose();
是關閉程序的一種非常有效的方法。
我發現使用System.exit(x)
重置了交互窗格,並假設您需要一些信息,它們都會消失。
我同意Jon,讓你的應用程序對某些事情做出反應並調用System.exit()。
請確保:
答案是System.exit(),但這不是一件好事,因為這會中止程序。 任何清理,破壞你打算做的事都不會發生。
這個問題有兩個簡單的答案。
這是“專業方式”:
//This just terminates the program.
System.exit(0);
這是一種更笨拙的方式:
//This just terminates the program, just like System.exit(0).
return;
Runtime.getCurrentRumtime().halt(0);
System.exit()
會做你想要的。 但在大多數情況下,您可能希望退出一個線程,並使主線程保持活動狀態。 通過這樣做,您可以終止任務,但也可以在不重新啟動應用程序的情況下啟動其他任務。
System.exit(ABORT); 立即退出流程。
這應該以正確的方式做到:
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();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.