Digamos, por ejemplo, que tengo mi aplicación ejecutándose en un terminal Linux y presiono "CTRL + C" en mi teclado para matar el proceso que terminará el programa Java.¿Cómo implemento la terminación elegante en Java?
¿Hay alguna forma de detectar esta "solicitud" en mi aplicación Java para poder cerrarla correctamente y liberar todos los recursos/registros de escritura? Tengo varios subprocesos en ejecución si hace una diferencia en la respuesta.
Sé que tiene un addShutDownHook, pero como está escrito en la documentación de Java, no se llama bajo ciertas circunstancias, como la señal de muerte de "CTRL + C" en Linux ... ¿hay alguna otra manera?
Runtime.getRuntime().addShutdownHook(new Thread()
{
public void run()
{
// TODO: implement graceful shutdown here.
}
});
ganchos de apagado tampoco serán llamados si se detiene la JVM http://download.oracle.com/javase/6/ docs/api/java/lang/Runtime.html # halt (int) –
@Nathan D. Ryan Cierto, es bastante razonable, creo. :) En resumen, no se invocarán en situaciones en las que no haya nada que puedas hacer de todos modos. – biziclop