gancho de desligamento vs método finalizador

Só não entendo por que deve-se usar Runtime.addShutdownHook. Se você deseja fazer alguma limpeza quando a jvm terminar, por que não sobrecarregar o método finalize da classe daemon. Qual é a vantagem de usar o gancho de desligamento sobre o método finalize.

Também há uma função descontinuada, runFinalizersOnExit. Se eu definir como false, acredito que os finalizadores não serão executados. Isso contradiz a garantia java de que os finalizadores sempre são executados antes da coleta de lixo.

questionAnswers(2)

yourAnswerToTheQuestion