Artículos
Java

Finalizar un programa Java

22/Sep/2015

¿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.

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.

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

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

public void attachShutDownHook(){
  Runtime.getRuntime().addShutdownHook(new Thread() {
    @Override
    public void run() {
      System.out.println("Esto lo ejecutamos cuando acabe el programa");
    }
  } );

  System.out.println("Creado el hook en el programa");
		
}

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

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

Código Fuente

Descárgate el código fuente de Finalizar un programa Java
Y si te ha gustado nuestro código fuente puedes regalarnos una estrella Star

Vídeos sobre Java

Disfruta también de nuestros artículos sobre Java en formato vídeo. Aprovecha y suscribete a nuestro canal.

Test Java

¿Te atreves a probar tus habilidades y conocimiento en Java con nuestro test?

Test Java
Suscribir
Notificar de
guest
5 Comentarios
Recientes
Anteriores Más votados
Opiniones integradas
Ver todos los comentarios