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

Odpowiedz Nowy wątek
2011-10-10 17:31
Smiglo
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ę poprostu 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.

Pozostało 580 znaków

2011-10-10 18:38
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.


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...

Pozostało 580 znaków

2011-10-10 21:41
zapchajdziura
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.

Pozostało 580 znaków

2011-10-10 22:11
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


Registered Linux user #456405 | SCJP 6 | SCWCD 5 | SCBCD 5

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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