Was sind diese Fäden, die spwaned werden, wenn eine Java-Anwendung ihre Ausführung beginnt?

StackOverflow https://stackoverflow.com/questions/2239186

  •  19-09-2019
  •  | 
  •  

Frage

Ich habe eine einfache Java-Anwendung erstellt, die eine JFrame und wenige JButtons hat. Als ich versuchte, die Java-Anwendung mit JVMTI ich zu inspizieren festgestellt, dass, obwohl ich keine expliziten Threads erstellt haben viele von ihnen gab es hervorgebracht.

Ich konnte die folgenden Themen finden:

  • DestroyJavaVM
  • AWT-Eventqueue-0
  • AWT-Shutdown
  • AWT-XAWT- Daemon-Thread
  • Java2D Disposer- Daemon-Thread
  • Thread-0- Daemon-Thread [Erstellt von der JVMTI Stelle]
  • Signal Dispatcher- Daemon-Thread
  • Finalize- Daemon-Thread
  • Referenz Handler- Daemon-Thread

Die meisten von ihnen waren in Runnable Zustand. Kann mir jemand die Funktion dieser Fäden sagen?

War es hilfreich?

Lösung

Diese Themen von den zugrunde liegenden Bibliotheken verwendet, um die Widgets zu verwalten, Display, Event-Loop und anderer Sanitärbereich, die für Ihre grafische Anwendung benötigt wird.

Ein GUI-Anwendung hat in der Regel eine Menge von beweglichen Teilen, und wenn Sie bemerkt haben Sie haben nicht explizit keinen Code schreiben, um diese Teile zu verwalten (zB die Aktualisierung den Bildschirm oder eine Taste zeichnen, oder eine Maus Handhabung Bewegung). Ist ist dieser Satz von Hintergrund-Threads, die für die Verwaltung dieser Teile verantwortlich sind, und es ist so einfach wie möglich zu machen, damit Sie auf Ihre Anwendungslogik konzentrieren können.

Diese Themen von den Bibliotheken hervorgebracht, die Sie verwenden (zum Beispiel AWT, Swing, etc.) und in der Regel selbst reinigen (und die Ressourcen, die sie verwalten) bis nach Beendigung.

Andere Tipps

Ich kann Ihnen einen sagen, und erraten, an drei ...

  • AWT-Eventqueue-0

Dies ist die GUI / AWT / Swing-Thread. Alles, was Schreiben an die GUI muss auf diesem Thread wird Ausführung! Manchmal, wenn ich denke, es ist ein Punkt, wo ein anderer Thread auf die GUI schreiben KöNNTE, werde ich bis zu dem Punkt gehen, wo ich die Behauptung denke passiert sein könnte und behauptet, dass der Name des aktuellen Thread matches „AWT-Eventqueue-0“ .

Ich wünschte wirklich, Sun eine „Debug“ Version der Bibliothek veröffentlicht hatte, die ein korrekte Einfädeln Verwendung in allen Komponenten geltend gemacht - es hat eine Menge Kopfschmerzen gespeichert haben würde und gespeichert Java aus einem wirklich schlechten REP mit für GUIs abstürzt, wenn es wirklich Leute, die über diesen Thread nicht verstehen.

Diese wahrscheinlich alle mit dem Gewinde Garbage Collector bezogen werden:

  • Java2D Disposer- Daemon-Thread
  • Finalize- Daemon-Thread
  • Referenz Handler- Daemon-Thread
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top