Ir al contenido

Finalizar un programa Java

¿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 muy 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(Thread t);

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.

Thread t = new Thread() {
public void run() {
// Código a ejecutar al finalizar
}
};

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

private void addShutdownHook() {
Runtime.getRuntime().addShutdownHook(new Thread() {
public void run() {
System.out.println("Finalizando la aplicación");
}
});
}

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

addShutdownHook();
Foto de Víctor Cuervo

Víctor Cuervo

Programador, Arquitecto IT, álter ego de Línea de Código, amante de las tecnologías, generador de conocimiento y facilitador del aprendizaje.

Descarga el código de Finalizar un programa Java

Uso de un hook para poder controlar las acciones a realizar al finalizar un programa Java.

Descargar código