Innerhalb der main() meiner Anwendung habe ich den folgenden Code, um Daten zu sichern, damit es nicht im Falle eines Systems heruntergefahren wird.Java Shutdown-Funktion wird nicht ausgeführt
//add hook to trigger Production Shutdown sequence
Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
public void run() {
Production.shutdown();
}
}));
jedoch, ob ich die Stop
Taste in meiner IDE drücken oder sich auf Eingabe über den log (Code unten) scheint es nie Daten in die Datenbank zu speichern oder alle Logs an die Konsole schreiben.
ctx.deploy(server);
server.start();
//start the production process
Production.init();
System.in.read();
server.stop();
Wie kommt es, dass diese Abschaltfunktion nicht ausgeführt wird?
Gibt es einen Code, der 'System.exit' aufruft, wenn eine Abschaltung stattfindet? Wenn Sie Probleme haben, einen zu finden, installieren Sie möglicherweise einen Sicherheitsmanager, der versucht, den Vorgang zu beenden. –
Warum beenden Sie nicht() am Ende von 'main()' stattdessen? – fge
@fge Es könnte mehrere Threads neben 'main' geben. Wenn dies der Fall ist, wird das Programm heruntergefahren, während die anderen Threads andere Dinge tun, was Probleme verursacht. – gparyani