Qual è il modo migliore per uscire da un'applicazione Java con codice?
Qual è il modo migliore per uscire da un'applicazione Java con codice?
Risposte:
Puoi usare System.exit() per questo scopo.
Secondo la documentazione Java 8 di Oracle:
public static void exit(int status)Termina la Java Virtual Machine attualmente in esecuzione. L'argomento funge da codice di stato; per convenzione, un codice di stato diverso da zero indica una chiusura anomala .
Questo metodo chiama il metodo exit nella classe Runtime. Questo metodo non ritorna mai normalmente.
La chiamata
System.exit(n)è effettivamente equivalente alla chiamata:
Runtime.getRuntime().exit(n)
System.exit(0);
Lo "0" fa sapere a chiunque abbia chiamato il tuo programma che tutto è andato bene. Se, tuttavia, si sta chiudendo a causa di un errore, è necessarioSystem.exit(1); o con un altro numero diverso da zero corrispondente all'errore specifico.
Inoltre, come altri hanno già detto, pulisci prima! Ciò comporta la chiusura di file e altre risorse aperte.
System.exit(1)(o qualsiasi altro numero) è se si desidera indicare che è stato chiuso a causa di un errore. System.exit(0)indica che il programma si è chiuso normalmente. Puoi anche cambiare 1 con qualsiasi numero che ti piace, quindi quando esegui la tua applicazione da uno script puoi determinare se si è verificato un errore.
System.exit() di solito non è il modo migliore, ma dipende dalla tua applicazione.
Il solito modo di terminare un'applicazione è uscire dal main()metodo. Questo non funziona quando sono in esecuzione altri thread non Deamon, come di consueto per le applicazioni con un'interfaccia utente grafica (AWT, Swing ecc.). Per queste applicazioni, puoi trovare un modo per terminare il ciclo degli eventi della GUI (non sai se ciò è possibile con AWT o Swing) o invocare System.exit().
Sono d'accordo con Jon, fai in modo che la tua applicazione reagisca a qualcosa e chiama System.exit ().
Assicurati che:
La risposta è System.exit (), ma non è una buona cosa da fare in quanto interrompe il programma. Qualsiasi ripulitura, distruzione che intendi fare non accadrà.
Ci sono due semplici risposte alla domanda.
Questo è il "modo professionale":
//This just terminates the program.
System.exit(0);
Questo è un modo più goffo:
//This just terminates the program, just like System.exit(0).
return;
System.exit(0); return;è anche buono, il ritorno impedisce l'esecuzione di qualsiasi codice ruther prima che il sistema possa uscire, altrimenti avresti bisogno di un flag (..i.e. if (!called_exit) { further code after exit statement }
Runtime.getCurrentRumtime().halt(0);
halt: "Questo metodo dovrebbe essere usato con estrema cautela. A differenza del exitmetodo, questo metodo non provoca l'avvio di hook di arresto e non esegue finalizzatori non invocati se la finalizzazione all'uscita è stata abilitata. Se la sequenza di spegnimento ha già avviato, questo metodo non attende che ganci di arresto o finalizzatori in esecuzione finiscano il loro lavoro. " In breve, non dovresti usare halt, dovresti preferire exit.
System.exit()farà quello che vuoi. Ma nella maggior parte dei casi, probabilmente vuoi uscire da un thread e lasciare in vita il thread principale. In questo modo, è possibile terminare un'attività, ma mantenere anche la possibilità di avviare un'altra attività senza riavviare l'app.
System.exit (rinunciare); Chiudi subito il processo.
Questo dovrebbe farlo nel modo corretto:
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();
}
}