2010-12-30 16 views
5

¿Hay alguna forma de recibir una notificación de cierre de JVM o llamada a System.exit antes del cierre real? Quiero esto, entonces mi aplicación podrá hacer una salida limpia. Me doy cuenta de que tal cosa es poco probable que exista, pero aún así, ¿tal vez hay algo como esto?¿Llamada interceptora para apagar la máquina java?

Respuesta

11

Tenga una mirada en Runtime.addShutdownHook

A partir de los documentos de la API:

La máquina virtual Java se cierra en respuesta a dos tipos de eventos:

  • El programa sale normalmente, cuando el último el hilo que no es daemon sale o cuando se invoca el método de salida (equivalentemente, System.exit) o ​​
  • La máquina virtual finaliza en respuesta a una interrupción del usuario, como escribir^C, o un sistema todo el evento, como el cierre de sesión del usuario o el cierre del sistema.

Usando Runtime.addShutdownHook puede ejecutar el código en esos casos.

+0

¡Hurra! ¡Realmente me ayudaste! – Rogach

3

Hay Runtime.getRuntime().addShutdownHook() método que es posible que desee explorar.