C'è un modo per ottenere la notifica di arresto JVM o chiamata System.exit prima dello spegnimento effettivo? Voglio questo, quindi la mia applicazione sarà in grado di fare un'uscita pulita. Mi rendo conto che una cosa del genere è improbabile che esista, ma comunque, forse c'è qualcosa di simile?Intercettazione della chiamata di arresto della macchina java?
5
A
risposta
11
Dai un'occhiata alla Runtime.addShutdownHook
Dalla documentazione API:
La macchina virtuale Java si spegne in risposta a due tipi di eventi:
- Il programma si chiude normalmente, quando l'ultimo non daemon thread termina o quando l'uscita (equivalentemente, System.exit) viene richiamato il metodo, o
- la macchina virtuale viene terminata in risposta ad un interrupt utente, ad esempio digitando^C, o un sistema evento di livello globale, come la disconnessione dell'utente o l'arresto del sistema.
Utilizzando Runtime.addShutdownHook
è possibile eseguire il codice in questi casi.
3
C'è il metodo Runtime.getRuntime().addShutdownHook()
che è possibile esplorare.
Urrà! Mi hai davvero aiutato! – Rogach