Gibt es in Java eine Möglichkeit, ein empfangenes SIGTERM zu verarbeiten?Wie wird mit einem SIGTERM verfahren?
Antwort
Ja, Sie können einen Shutdown-Hook mit Runtime.addShutdownHook()
registrieren.
Sie können eine shutdown hook hinzufügen, um eine Bereinigung durchzuführen.
So:
public class myjava{
public static void main(String[] args){
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
System.out.println("Inside Add Shutdown Hook");
}
});
System.out.println("Shut Down Hook Attached.");
System.out.println(5/0); //Operating system sends SIGFPE to the JVM
//the JVM catches it and constructs a
//ArithmeticException class, and since you
//don't catch this with a try/catch, dumps
//it to screen and terminates. The shutdown
//hook is triggered, doing final cleanup.
}
}
Dann ist es laufen:
[email protected]:~$ javac myjava.java
[email protected]:~$ java myjava
Shut Down Hook Attached.
Exception in thread "main" java.lang.ArithmeticException:/by zero
at myjava.main(myjava.java:11)
Inside Add Shutdown Hook
Eine andere Möglichkeit, Signale zu verarbeiten in Java über das sun.misc.signal Paket. Informationen zur Verwendung finden Sie unter http://www.ibm.com/developerworks/java/library/i-signalhandling/.
ANMERKUNG: Die Funktionalität, die in sun. * Paket ist, würde auch bedeuten, dass es möglicherweise nicht tragbar/sich das gleiche über alle OS (s) verhält. Aber vielleicht möchten Sie es ausprobieren.
Aber in Wirklichkeit tut es das gleiche? –
Nein - nicht genau. Die erwähnte Signalverarbeitungs-API kann verwendet werden, um die meisten systemeigenen OS-Signale (Trap, Intr, Kill usw.) in Java-Apps zu verarbeiten. Auf der anderen Seite wird ShutdownHook nur aufgerufen, wenn JVM schließlich beendet wird (nachdem ein Kill-Signal empfangen wurde). – arcamax
@arcamax der Link scheint zu brechen – GreenGiant
- 1. Wie wird mit einem IDisposable-Repository mit Unity verfahren?
- 2. Wie wird mit mehreren Infofenstern verfahren?
- 3. Wie wird mit einem kleinen Limit für Chrome 18 verfahren?
- 4. Wie wird mit einem Bestätigungsdialog für die Webansicht verfahren?
- 5. Wie wird mit einem großen Strom von JSON-Wörterbüchern verfahren?
- 6. Wie wird mit leerem AliasSeq verfahren?
- 7. Wie wird mit dem Browser-Cache verfahren?
- 8. Wie wird mit fehlerhaften Daten verfahren?
- 9. Wie wird mit der Dateierstellung verfahren?
- 10. Wie wird mit geladenen Bildern verfahren? Swift
- 11. Wie wird das Verfahren ausgeführt?
- 12. Prozess mit zookeeper C-Client wird auf SIGTERM
- 13. @ModelAttribute in einem Verfahren
- 14. haskells Klammer auf SIGTERM
- 15. Call-Verfahren mit Ref Cursor in einem anderen Verfahren
- 16. Reihenfolge von einem Verfahren
- 17. Wie wird mit einer Nicht-SOAP-Fehlermeldung verfahren?
- 18. Wie wird mit der Node/MongoDB-Verbindungsverwaltung verfahren?
- 19. Wie wird mit Zeitzonen zwischen Server und Client verfahren?
- 20. Amazon Elastic MapReduce - SIGTERM
- 21. throws Exception in einem Verfahren mit Kotlin
- 22. Wie unerwünschtes Verhalten in einem Verfahren ändern
- 23. Scala: Mit TypeTag in einem Verfahren
- 24. setters/Getter in einem Verfahren
- 25. Wie wird mit vorhandenen indizierten URLs für gemischte Fälle verfahren?
- 26. Wie wird mit verschiedenen Verzeichnisordnern auf verschiedenen Linux-Distributionen verfahren?
- 27. Wie wird mit dem modalen Dialogfeld in Selenium verfahren?
- 28. Wie wird mit falschen Konstruktorargumenten in Javascript verfahren?
- 29. Wie wird mit der Anmeldeauthentifizierung verfahren, ohne Auto zu verwenden?
- 30. Wie wird mit mehreren Touch-Gesten gleichzeitig verfahren?
Der Blog-Eintrag ist 404 – luckydonald