14.3 | Beenden eines Programms |
Auch das Beenden eines Programms ist ein Aspekt, bei dem Java eine kleine Besonderheit besitzt. Bei Applikationen ist das Beenden recht einfach. Eine Java-Applikation wird beendet, wennIn den ersten drei Fällen wird die Anwendung normal beendet, d. h. die Java Virtual Machine hat hierbei noch die Zeit »Aufräumarbeiten« zu erledigen. Hierzu kann z. B. das Schreiben von zwischengepufferten Daten und das Schließen von Dateien gezählt werden. Diese Aufgaben können seit JDK 1.3
- der letzte Thread beendet ist, der kein Daemon-Thread ist,
- die Anwendung mit Aufruf der Methode System.exit() terminiert wird,
- die Anwendung vom Benutzer mit Strg+C auf der Konsole abgebrochen wird,
- die Virtual Machine durch Aufruf der Methode System.halt() gestoppt wird oder
- die Anwendung durch externe Systemaufrufe terminiert wird (z. B. durch das Beenden über den Windows Task-Manager).
in so genannten »Shutdown-Hooks« durchgeführt werden.
Im Gegensatz hierzu wird die Java Virtual Machine in den letzten beiden Fällen auf der Stelle zerstört und die Anwendung hat keine Möglichkeit mehr darauf zu reagieren. Deshalb sollte diese Möglichkeit nur in Ausnahmefällen zum Beenden der Anwendung benutzt werden.