Java Shutdown Hook

Shutdown Hook

Oft müssen beim Beenden der JVM (java virtual machine) Aufräumarbeiten durchgeführt werden.
Dies erreicht man mit einem shutdown hook: dieser definiert Code, der beim Beenden der JVM ausgeführt wird.
Ein Java Programm kann zur Laufzeit jederzeit einen neuen shutdown hook hinzufügen.

Alle shutdown hooks werden beim Beenden der JVM ausgeführt, zum Beispiel wenn ein laufender Java Prozeß mit Strg-C ("^C") abgebrochen wird.
Ein (zusätzlicher) shutdown hook wird einfach beim (Singleton-) Objekt der Klasse Runtime eingehängt:


    // zusätzlicher Shutdown hook hinzufügen:
    Runtime.getRuntime().addShutdownHook(new Thread() {
        public void run() {
            // ShutdownHook: alles ab hier wird beim Beenden der JVM ausgeführt:
            System.out.println("Letzte Chance zum cleanup!");
        }
    });

Vollständiges Beispiel mit einem Shutdown-Hook

Dieses Beispiel zeigt, daß der Code des shutdown hooks immer beim Beenden der JVM ausgeführt wird.
Lassen Sie das Programm bis zum Ende durchlaufen oder brechen Sie es mit ^C (Strg-C) ab - Sie werden sehen:


/**
 * Diese Klasse zeigt, wie ein Java ShutdownHook funktioniert.
 */
public class ShutdownHookTest {
    public void main(final String[] args) {
        Runtime.getRuntime().addShutdownHook(new Thread() {
            public void run() {
                System.out.println("Das Programm wird beendet; der ShutdownHook ist die letzte Aktion.");
                System.out.println("Normalerweise werden hier die letzten Aufraeumarbeiten erledigt; dieses Testprogramm bringt aber nur diese Info-Meldung.");
            }
        });
        for (int i = 10; i > 0; i--) {
            System.out.println("Programm-Ende in circa " + i + " Sekunden, oder vorher, wenn Sie mit Strg-C abbrechen.");
            try {
                Thread.sleep(1000);
            } catch (Exception ignore) {
            }
        }
    }
}

Praktische Beispiele für einen Shutdown Hook

In folgenden Situationen ist ein Shutdown hook praktisch:



Nach oben, Inhaltsverzeichnis, Impressum Admin: Artikel editieren