Por lo que sé, voy a explicar esto a continuación. Puedes buscarlo en Google y encontrar mucha información también.
addShutdownHook()
registrará algunas acciones que se realizarán en la terminación de un programa. El programa que inicia termina de dos maneras:
- el hilo principal (Root) finaliza su contexto de ejecución;
- el programa resuelve una situación inesperada, por lo que no puede continuar.
Si agrega un ShutdownHook, el gancho iniciará una secuencia que comenzará a ejecutarse en el momento de la terminación solamente. Por ejemplo:
Runtime.getRuntime().addShutdownHook(new Thread() {
public void run() {
System.out.println("Running Shutdown Hook");
}
});
imprimirá un Running Shutdown Hook
en el momento de la terminación del programa en cualquier momento. Incluso puede llamar al System.exit(0)
.
Por ejemplo, puede google, hay suficientes. Y la pregunta "¿cuándo deberías usar esto? Es como preguntar '¿Qué hace catch
en una declaración try-catch
'?
Es posible que tenga muchas situaciones como:
- su programa había creado muchos archivos temporales en el sistema de archivos que desea eliminarla;
- necesita enviar una señal de socorro a otro proceso/máquina antes de terminar;
- ejecutar acciones de limpieza, registro o acciones de errores posteriores en comportamientos inesperados.
Todo esto será necesario en algún punto del tiempo.
Para ejemplos se puede ir aquí habrá una carrera de rosca cuando `JVM` sí se shutdowned Example 1 o Example 2
Las razones que da para la terminación son inexactas. Vea la respuesta de Buhake para la versión correcta. – meriton