Bom dia a todos!
Bom, estava eu hoje de manhã lendo algumas threads aqui no GUJ quando uma delas me levou a ler esse link no javaranch:
http://www.coderanch.com/t/481930/Programmer-Certification-SCJP/certification/does-gc-still-have-chance
Bom, em certo momento me deparei com a declaração (repetidas vezes):
Fiquei curioso e fui pesquisar esse shutdown hook (algo como “gancho ao finalizar”, ao pé da letra, melhores traduções por favor me informem hehe).
Nessa busca (que não foi difícil) encontrei esse link interessante:
http://java.sun.com/j2se/1.5.0/docs/guide/lang/hook-design.html
Foi bastante explicativo.
Mas enfim, indo agora ao ponto tenho algumas perguntas:
1 - Por que a execução do finalize não é garantida?
2 - Qual seria uma boa forma (ou melhor/melhores, se houver) de se usar esse “shutdown hook”.
Como exemplo, inicio um método, peço uma conexão pro meu pool, uso-a e então devo fecha-la, como fazer isso de uma forma inteligente ?
3 - Li em uma outra thread a um tempo atrás que no Java7 não haverá a necessidade, por questões de segurança e performance, que se feche os recursos explicitamente mas que não há problemas caso o faça. Isso se aplica a conexões de bancos? Ainda assim seria seguro continuar fazendo essas liberações explicitamente, uma vez que não é garantido quando isso será feito, correto?
Muito obrigado a todos pela paciência em ler meu post, prefiro ser bastante explicativo para não deixar muitas dúvidas do que quero.
Abraços!