„Oto nowy i interesujący temat”.

„Okazuje się, że można uruchamiać wątki w różnych trybach”.

„Standardowy program (z tylko jednym wątkiem) przestaje działać, gdy główny wątek kończy swoją pracę. Główny wątek kończy wykonywanie, program kończy działanie, a JVM zwalnia swoją pamięć”.

„Jeśli uruchomimy wątek potomny, program będzie działał, nawet jeśli zakończy się główny wątek. JVM nie zakończy działania, dopóki jest przynajmniej jeden działający wątek. Po zakończeniu wszystkich uruchomionych wątków program się zamyka”.

„Cóż, duże programy często mają tak zwane „wątki serwisowe”, których zadaniem jest obsługa innych części programu. Same w sobie nie są potrzebne. Na przykład: usuwanie nieużywanych obiektów (odśmiecanie), zrzuty pamięci i błędy logowanie, różne raporty o aktualnym stanie programu i tak dalej, i tak dalej”.

„Te wątki usług są potrzebne, gdy program jest uruchomiony, ale nie są potrzebne samodzielnie”.

"Tak rozumiem to."

„Java pozwala uruchamiać wątek jako demon . Takie wątki działają tak samo, jak inne, ale jeśli wszystkie wątki niebędące demonami w programie zostały zakończone i pozostały tylko wątki demonów, JVM zamknie program”.

„Więc zadeklarowanie wątku„ usługi ”oznacza po prostu, że nie jest on brany pod uwagę przy zamykaniu programu. Czy to wszystko?”

„Uhhhh… Cóż, z pewnością powiedziałeś to krótko i słodko. Zasadniczo to chciałem ci powiedzieć”.

„Zwięzłość to talent. A utalentowane roboty są utalentowane we wszystkim”.

"Jakieś pytania?"

„Jak rozpocząć wątek jako demon? Odziedziczyć po jakiejś klasie DaemonThread?”

„Nie, to jest o wiele prostsze. Klasa Thread ma metodę setDaemon(boolean). Musisz tylko przekazać wartość true i to wszystko. Wystarczy ją wywołać przed wywołaniem metody start(), zanim prawdziwy wątek zostanie utworzony. Nie można zmienić typu wątku po jego uruchomieniu."

Przykład:
Thread thread = new LoggerThread();
thread.setDaemon(true);
thread.start();

"I to wszystko?"

"Tak."

"Chcę jeszcze raz zwrócić Waszą uwagę na proces tworzenia i rozpoczynania wątku."

„Utworzenie obiektu Thread nie tworzy wątku. Obiekt Thread nie jest wątkiem. JVM tworzy wątek po wywołaniu metody start(). Wątek to specjalny obiekt JVM, który umożliwia dostęp do informacji o wątku i daje trochę nad tym panujesz”.

– Rozumiem. Dzięki, Ellie.