Frage

Ich habe eine Anwendung in Java, in denen ich versuche, um sicherzustellen, dass das, wenn jemand verläßt Codes System.exit () im Code soll ein Zuhörer die Ressourcen einige Dinge zu tun, wie Nachrichtenprotokollierung und Loslassen aufgerufen werden ...

Wie ich es umsetzen kann, jede Anregung / Ansatz ist willkommen.

War es hilfreich?

Lösung

Die Runtime.addShutdownHook Verfahren verwendet werden können, einen Shutdown-Hook an, die im Grunde ein unstarted Thread ist, die beim Abschalten der Java Virtual Machine ausgeführt wird.

Allerdings ist dieses Gebiet, das sorgfältig beschreiten werden sollte, da es zu einem sehr sensiblen Zeitpunkt des Lebenszyklus des JVM ausgeführt wird. Aus den API-Spezifikationen für die Runtime.addShutdownHook Methode:

  

Shutdown Haken in einer heiklen Zeit laufen   im Lebenszyklus einer virtuellen Maschine   und sollte daher codiert werden   abwehrend. Sie sollten in   Insbesondere geschrieben zu sein   Thread-sicher und Deadlocks zu vermeiden   soweit möglich.

In jedem Fall sollten Sie ein wenig lesen, wie Herunterfahren Haken arbeiten, da sie wahrscheinlich nicht ohne gute Vorbereitung angegangen werden sollen. Achten Sie darauf, sorgfältig die API-Spezifikation für die Runtime.addShutdownHook Methode zu lesen.

Hier sind ein paar Artikel, die ich von der Suche nach Informationen für diese Antwort gefunden:

  • Shutdown Hooks - es zeigt ein kleines Beispiel dafür, wie ein Shutdown-Hook für die Anmeldung beim Herunterfahren hinzugefügt wird.

  • Gestaltung der Shutdown Hooks API - behebt einige Designentscheidungen des Abschaltens Haken in einer Frage-und-Antwort-Stil

  • .

Andere Tipps

Die Funktion Runtime.addShutdownHook(Thread thehook) können Sie einen Haken in die Java Virtual Machine registrieren.
Der Haken arbeitet als initialisiert aber unstarted Faden, der durch die JVM beim Ausleiten aufgerufen wird. Für den Fall, registrieren Sie mehr als einen Haken, beachten Sie, dass die Reihenfolge, in der die Haken genannt werden, ist nicht definiert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top