Chyba nie zrozumiałeś co wątek demon jest.
Zobacz what is a daemon thread in java
Podsumowując, to w zasadzie oznacza, że wątek demon nie należy robić żadnych I/O lub posiadających żadnych zasobów. Jeśli naruszasz tę podstawową zasadę, twój wątek nie kwalifikuje się jako wątek demona.
Dodawanie haka zamykającego to standardowy sposób zapewnienia, że kod zostanie wywołany przed zakończeniem JVM, ale nawet to nie jest gwarantowane w 100% - na przykład JVM może ulec awarii, pozostawiając system operacyjny w taki sposób, aby uporządkować zasoby w sposób który chroni system operacyjny, ale prawdopodobnie pozostawia twoją aplikację w niespójnym/błędnym stanie.
Mechanizmy kontrolowania i odzyskiwania systemu cofają się do początków oprogramowania (na przykład systemów operacyjnych i operacji wsadowych), a niestety, to koło wciąż jest wymyślane od nowa, ponieważ nie ma metody "silver bullet" (API), która rozwiązuje problem ten problem w dość ogólny sposób.
Czy spojrzałeś na kod źródłowy? –
@StephenC Nie przyszło mi to do głowy i na pewno udzieliłbym definitywnej odpowiedzi (choć niekoniecznie użytecznej). Osobiście jednak nie jestem na tyle odważny, aby podjąć taką próbę i naprawdę nie oczekuję, aby ktokolwiek inny. –
W porządku, pozwól mi być bardziej konkretnym. Najlepszym sposobem, aby odpowiedzieć na takie pytanie, jest sprawdzenie kodu źródłowego lub przynajmniej kodu Java. Ogólnie rzecz biorąc, jest to łatwe do odczytania i dobrze skomentowane.(I nie rozumiem, jak ostateczna odpowiedź na pytanie jest mniej przydatna niż nie definitywna ... szczególnie jeśli * ty * byłeś osobą czytającą kod!) –