Shutdown hook. Porque é tão pouco falado?

4 respostas
A

Olá pessoal,

A não muito tempo, vasculhando a documentação do JDK, encopntrei uma coisa que realmente desconhecia, o Shutdown Hook. O Shutdown hook é basicamente uma Thread, que é executada pela JVM, quando esta é finalizada. Assim mesmo que a aplicação seja terminada de maneira “forçada”, ainda assim o a Thread Shutdow Hook é executada.
Isto é ótimo para, pro exemplo, fechar as conexão que uma aplicação tem com um banco de dados, fora outras liberações de recursos utilizados pela aplicação.

Para quem se interessar leia http://www.onjava.com/pub/a/onjava/2003/03/26/shutdownhook.html

Espero que ajude alguém.

Valeu!

4 Respostas

K

Não sei se foi um erro cometido por mim, mas vou registar aqui o que já vi acontecer…
Caso você tenha uma aplicação usando o Java Web Start, quando essa aplicação for finalizada esse esquema com o Shutdown Hook não funciona. Tentei de várias maneiras e nada.
Um conhecido meu estava fazendo um sistema de registro de tarefas, onde o usuário registraria, dentre outras coisas, os momentos em que iria iniciar, pausar, re-executar e finalizar a tarefa. A idéia dele era de usar o Shutdown Hook para pausar a tarefa no momento que a máquina fosse desligada. Só que, para variar, nada funcionou.
Caso alguém já tenha conseguido isso fazer funcionar e gostaria de dar um depoimento, ficarei muito grato mesmo…

[]'s.

M

eu nao consegui fazer o shutdownHook funcionar quando vc mata o processo.

Só quando a aplicação java chama o System.exit()

R

A conexão do banco de dados deve ser controlada no ciclo de vida da sua transação, não no ciclo da aplicação.

Eu particularmente acho que são raríssimos(ou algo mais superlativo) os casos de necessidade de uso disso.

T

O Shutdown Hook também é chamado, em uma aplicação console, quando você tecla Ctrl+C para encerrar a aplicação. (Ctrl+Break faz uma outra coisa, que é o dump das threads).

Criado 14 de março de 2008
Ultima resposta 12 de nov. de 2008
Respostas 4
Participantes 5