Wyjście z programu a zakończenie wątków

0

Mam pytanie natury kosmetycznej.
Załóżmy, że jakiś wątek w programie działa dopóki zmienna isRunning jest ustawiona na true.
Po ustawieniu isRunning na false wątek kończy działanie, ale trwa to jakiś czas.
Czy w momencie kiedy użytkownik chce wyłączyć aplikację, mogę po prostu ustawić isRunning na false i zakończyć program, czy też powinienem zaczekać aż wątek zakończy działanie (za pomocą join())?

Dzieki za pomoc.

1

Jak ubijesz aplikację to wątki i tak polecą więc to bez znaczenia co zrobisz. Chyba ze te wątki coś np. mogą jeszcze zapisywać, wtedy powinieneś je joinować i dodatkowo przechwytywać shutdown-hook tak żeby pozamykać wszystko zanim aplikacja padnie.

1

Bzdura - watki nie koncza sie po zakonczeniu aplikacji.Pierwszy lepszy przyklad z brzegu - aplikacja Swing. W main budujesz UI, i gdziestam startuje sobie watek EDT; main sie konczy i ten watek glowny aplikacji sie konczy, ale EDT leci dalej.
Watki sie koncza wraz z aplikacja tylko i wylacznie jesli sa to tzw. demony - Thread.setDaemon(true).
Nie szerzcie niewiedzy.

0
zapchajdziura napisał(a)

Bzdura - watki nie koncza sie po zakonczeniu aplikacji.Pierwszy lepszy przyklad z brzegu - aplikacja Swing. W main budujesz UI, i gdziestam startuje sobie watek EDT; main sie konczy i ten watek glowny aplikacji sie konczy, ale EDT leci dalej.
Watki sie koncza wraz z aplikacja tylko i wylacznie jesli sa to tzw. demony - Thread.setDaemon(true).
Nie szerzcie niewiedzy.

Nie masz racji. Błędnie utożsamiasz "koniec aplikacji" z końcem metody main.
Aplikacja kończy się, gdy zajdzie jeden z warunków:
-skończy się ostatni wątek, który nie jest demonem
-system wymusi zakończenie aplikacji
-w którymś wątku zostanie wywołane System.exit
-wystąpi błąd wewnętrzny JVM

1 użytkowników online, w tym zalogowanych: 0, gości: 1