2010-09-17 14 views
8

Ich frage mich nur. Muss ich System.exit(0); kurz bevor main Methode einer Java-Befehlszeilenanwendung aufrufen? Wenn ja warum? Was ist der Unterschied, wenn ich es selbst verlassen möchte, wenn ich einfach immer 0 setzen würde? Was ist nicht aufgeräumt?Beenden Sie die Java-Befehlszeilenanwendung ordnungsgemäß

Vielen Dank im Voraus.

+1

Siehe auch http://stackoverflow.com/questions/3715967/when-should-we-call-system-exit-in-java – Qwerky

Antwort

16

Nein! Sie müssen nicht immer System.exit(0) aufrufen, um ein Java-Programm zu beenden. Wenn von Ihrem Code kein Nicht-Daemon-Thread erzeugt wird, wird die Anwendung automatisch beendet, sobald Sie Ihre Hauptthreadaufgabe beendet haben.

Wenn Ihre Hauptmethode dazu führt, dass einige Nicht-Daemon-Threads erzeugt werden, die noch aktiv sind, während die Hauptmethode das Ende erreicht hat, wird die Anwendung erst beendet, wenn diese Threads abgeschlossen sind. Wenn Sie in diesem Fall explizit System.exit(0) aufrufen, wird die Anwendung sofort beendet und alle Threads werden gelöscht.

Bitte beziehen Sie sich auf javadoc of Thread, die die Details erwähnt.

2

Kein Anruf erforderlich System.exit(), nur zurück von main(). Dies ist das normale Idiom zum Beenden eines Java-Programms.

System.exit() wird normalerweise aufgerufen, um eine App in der Mitte der Dinge zu beenden (was normalerweise eine abnormale Beendigung aufgrund eines schwerwiegenden Fehlers bedeutet).

Verwandte Themen