Beenden Sie die Java-Befehlszeilenanwendung ordnungsgemäß

8

Ich frage mich nur. Muss ich System.exit(0); direkt aufrufen, bevor main Methode einer Java-Befehlszeilenanwendung endet? Wenn ja warum? Was ist der Unterschied zu lassen, dass es sich selbst verlässt, wenn ich einfach immer 0 setzen würde? Was ist nicht aufgeräumt?

Vielen Dank im Voraus.

    
Trimack 17.09.2010, 08:50
quelle

2 Antworten

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 System.exit(0) explizit aufrufen, wird die Anwendung sofort beendet und alle Threads werden gelöscht.

Siehe javadoc von Thread , in der die Details erwähnt werden.

    
Gopi 17.09.2010, 08:53
quelle
2

Sie müssen System.exit() nicht aufrufen, kehren Sie einfach von main() zurück. 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).

    
Péter Török 17.09.2010 08:53
quelle