19 enero 2006

Enterarnos de que nuestro programa java termina

Tenemos la posibilidad de enterarnos de que nuestro programa java termina, bien por hacer System.exit(), bien por la pulsación de Ctrl-C. De esta forma, al producirse la salida, podemos realizar ciertas tareas antes de que termine la ejecución.

La forma es utilizar el método addShutdownHook() de la clase Runtime. A este método le pasamos un Thread que se arrancará cuando se produzca el exit() o la terminación por Ctrl-C.

El siguiente trocito de código hará que se escriba "Adios" al terminarse nuestro programa

Thread hilo = new Thread (new Runnable ()
{
public void run ()
{
System.out.println ("Adios");
}
});

Runtime.getRuntime().addShutdownHook(hilo);

Lo de que queramos enterarnos cuando se pulsa Ctrl-C es entendible. ¿Para qué sirve enterarnos de un exit(), si lo hacemos nosotros?. Tiene bastante sentido en clases que formen parte de una librería más o menos reutilizable. Si hacemos una clase común/reutilizable que necesite hacer algo cuando termina el programa, ya no dependemos de que el que la use nos llame a algún método antes de hacer exit(). Nuestra propia clase puede usar este sistema para asegurarse de ser llamada al terminar el programa java.

No hay comentarios: