2010-02-10 12 views
5

Stworzyłem prostą aplikację Java, która ma JFrame i kilka JButtonów. Kiedy próbowałem sprawdzić aplikację Java za pomocą JVMTI, odkryłem, że chociaż nie stworzyłem żadnych wyraźnych wątków, to wiele z nich zostało zarodkowanych.Co to są te wątki, które są spwanowane po uruchomieniu aplikacji Java?

udało mi się znaleźć następujące tematy:

  • DestroyJavaVM
  • AWT-EventQueue-0
  • AWT-Shutdown
  • AWT-XAWT- Daemon Temat
  • Java2D Disposer- Daemon Temat
  • Temat-0-Daemon Wątek [Utworzony przez agenta JVMTI]
  • Sygnał Dispatcher- Daemon Temat
  • Temat
  • Finalize- Daemon Temat
  • referencyjny Handler- Daemon

Większość z nich była w stanie Runnable. Czy ktoś może mi powiedzieć o funkcji tych wątków?

Odpowiedz

9

Te wątki są używane przez biblioteki bazowe do zarządzania widżetami, wyświetlaczem, pętlą zdarzeń i innymi instalacjami, które są potrzebne do aplikacji graficznej.

Aplikacja GUI zwykle zawiera wiele ruchomych części, a jeśli zauważyłeś, nie musisz bezpośrednio pisać żadnego kodu do zarządzania tymi częściami (np. Aktualizowanie ekranu, rysowanie przycisku lub obsługa ruch myszy). Jest to zestaw wątków działających w tle, które są odpowiedzialne za zarządzanie tymi częściami i ułatwiają skupienie się na logice aplikacji.

Te wątki są tworzone przez używane biblioteki (np. AWT, Swing itp.) I zazwyczaj oczyszczają się (i zasoby, którymi zarządzają) po zakończeniu.

1

Mogę powiedzieć jedno, i zgadnijcie co trzy ...

  • AWT-EventQueue-0

To GUI/AWT/Swing wątek. Wszystko, co pisze do GUI, musi być wykonane w tym wątku! Czasami, jeśli myślę, że istnieje punkt, w którym inny wątek MOGŁA pisać do GUI, przejdę do punktu, w którym myślę, że może się zdarzyć, i twierdzę, że nazwa bieżącego wątku pasuje do "AWT-EventQueue-0" .

Naprawdę chciałbym, aby Sun wydał wersję "Debug" biblioteki, która zapewniała prawidłowe użycie wątków we wszystkich komponentach - zaoszczędziłoby to wielu bólów głowy i uratowałoby Javę od posiadania naprawdę złego REP z powodu awarii GUI, gdy to naprawdę ludzie, którzy nie rozumieją tego wątku.

Są to chyba wszystko związane z gwintowaną śmieciarza: gwint

  • Java2D Disposer- Daemon Temat
  • Finalize- Daemon Temat
  • referencyjny Handler- Daemon