O ile mi wiadomo, wyjaśnię to poniżej. Możesz go znaleźć w Google i znaleźć wiele informacji.
addShutdownHook()
zarejestruje niektóre działania, które mają być wykonane na zakończenie Programu. Program, który uruchamiasz, kończy się na dwa sposoby:
- główny wątek (root) kończy działanie kontekstu;
- program spełnia pewną nieoczekiwaną sytuację, więc nie może przejść dalej.
Jeśli dodasz ShutdownHook, zaczep rozpocznie wątek, który zacznie działać tylko w momencie zakończenia. Na przykład:
Runtime.getRuntime().addShutdownHook(new Thread() {
public void run() {
System.out.println("Running Shutdown Hook");
}
});
wypisze Running Shutdown Hook
w momencie zakończenia programu w dowolnym momencie. Możesz nawet zadzwonić pod numer System.exit(0)
.
Na przykład można google, jest ich wystarczająco dużo. A pytanie "Kiedy powinieneś tego używać" przypomina pytanie "Co robi catch
w oświadczeniu try-catch
".
Można mieć wiele takich sytuacji:
- program stworzył wiele plików tymczasowych w systemie plików, które chcesz go usunąć;
- musisz wysłać sygnał o niebezpieczeństwie do innego procesu/maszyny przed zakończeniem;
- wykonać wszelkie czynności związane z czyszczeniem, rejestrowaniem lub błędami po nieoczekiwanych zachowaniach.
Wszystko to będzie potrzebne w pewnym momencie.
Do przykładów można iść tu Example 1 lub Example 2
Powody podane w celu rozwiązania umowy są niedokładne. Zobacz odpowiedź Buhake'a na poprawną wersję. – meriton