8 de febrero de 2015

Ctrl+C (SIGINT) in Java


Capturando el evento de apagado (shuts down) de la maquina virtual de Java.

Esto sucede cuando:

* Un programa finaliza normalmente  o  System.exit
* O cuando se presiona Ctrl + C  (^C), equivalente a la señal SIGINT

Java proporciona una forma de obtener este evento:

De la clase Runtime el método:


public void addShutdownHook(Thread hook)

Proporciona una forma de ejecutar una porción de código antes que termine el programa.

Recibe como parámetro un Thread instanciado sin iniciar.

Una forma sencilla de hacerlo es:


Runtime.getRuntime().addShutdownHook(new Thread() {
      public void run() {
              /* 
my shutdown code here */.
    }
});


Nota: Solo se puede obtener una vez, así que antes de terminar el aplicativo se debió escribir esa linea de código.

Referencias: