Este assunto é muito velho e a maioria dos desenvolvedores Java mais antigos devem saber. Resolvi postar Isso aqui porque simplesmente precisei disso, demorei um pouco para encontrar e quando encontrei achei apenas artigos em inglês. Eu não tenho problemas com isso, mas algumas pessoas podem sentir falta de um texto em português.
A classe Runtime oferece um método chamado addShutdownHook, que recebe uma Thread como parâmetro. Dito isso, é importante fazer algumas colocações:
- O shutdown hook é acionado sempre que a execução do programa é finalizada. Naturalmente ou através do desligamento da jvm ou computador;
- É possível registrar vários hooks.
- Uma vez registrado, o hook pode ser "desregistrado".