Finalizar un programa Java

22/Sep/2015 Java Deja un comentario

¿Qué pasa si mi programa Java finaliza de forma inesperada? o ¿Cómo puedo realizar una serie de operaciones al finalizar un programa Java? Es my normal que nos hagamos estas preguntas si nos preocupa que el programa Java se cierre y nos deje las conexiones a la base de datos abiertas o puertos de sockets colgados.

Para poder solucionar esta situación podemos realizar una serie de operaciones y así finalizar un programa Java de forma correcta.

La idea es añadir un hook en el cual codificaremos las sentencias que queramos que se ejecuten al finalizar el programa.

Es importante saber que esto solo controla si se ha ejecutado la última línea de un programa o ante un System.exit() o en un cierre controlado de la JVM. No funcionará si el sistema operativo mata el proceso.

Para poder añadir el hook utilizamos el método .addShutdownHook(). Dicho método recibirá un objeto Thread. Este será el hilo que se ejecute al finalizar el programa.

  1. Runtime.getRuntime().addShutdownHook(new Thread() {...} );

Vemos que el método .addShutdownHook() se ejecuta sobre el entorno en el que estemos ejecutando nuestro programa Java. Es por ello que utilizamos el objeto Runtime.

Lo siguiente será codificado el hilo Thread, eso nos llevará a codificar su método .run() que será el que tenga el contenido de ejecución del hilo.

  1. Runtime.getRuntime().addShutdownHook(new Thread() {
  2. @Override
  3. public void run() {
  4. System.out.println("Esto lo ejecutamos cuando acabe el programa");
  5. }
  6. } );

Ya solo nos queda añadir este hook dentro de un método de nuestro programa principal.

  1. public void attachShutDownHook(){
  2. Runtime.getRuntime().addShutdownHook(new Thread() {
  3. @Override
  4. public void run() {
  5. System.out.println("Esto lo ejecutamos cuando acabe el programa");
  6. }
  7. } );
  8.  
  9. System.out.println("Creado el hook en el programa");
  10.  
  11. }

E invocar al método desde el programa. Para añadir el hook y que este se ejecute a finalizar un programa Java.

  1. public static void main(String[] args) {
  2. CierreAplicacion app = new CierreAplicacion();
  3. app.attachShutDownHook();
  4. System.out.println("Última instrucción del programa");
  5. System.exit(0);
  6. }

Vídeos sobre Java


Difunde el Conocimiento

Si te ha gustado el artículo o te ha sido de utilidad, no dejes de compartirlo con tus amigos en las redes sociales... Te estaremos muy agradecidos. :-D

¿Algo que nos quieras comentar?

Déjanos tu comentario, no te preocupes que tu email no será publicado

*

*