Swing Event Dispatch Thread

OmegaPirat

Mitglied
Hallo,
ich habe gelesen, dass es besser ist, wenn man das GUI statt im main-Thread im Event Dispatch Thread erzeugt. Zum Beispiel mit der invokeLater-Methode. Allerdings habe ich nicht verstanden wieso das besser sein soll und ich finde im Internet kaum etwas dazu. Kann mir das jemand verständlich erklären?

Auch habe ich noch eine Frage zum genauen Ablauf einer Swing Anwendung.
In welchem Thread laufen die GUI Elemente? Ich meine, wenn der main Thread abgearbeitet wurde, wird doch normalerweise das Programm beendet, aber die GUI Elemente laufen unabhängig vom main Thread weiter. Wie genau funktioniert das?
vielen dank
 
ich habe gelesen, dass es besser ist, wenn man das GUI statt im main-Thread im Event Dispatch Thread erzeugt. Zum Beispiel mit der invokeLater-Methode. Allerdings habe ich nicht verstanden wieso das besser sein soll und ich finde im Internet kaum etwas dazu. Kann mir das jemand verständlich erklären?
Swing ist nicht Threadsicher, dh, mit mehreren Threads auf Elemente zugreifen kann zu inkonsistentem State führen, deshalb prüfen machen Komponenten, ob sie durch den EDT bearbeitet werden, und werfen eine Exception, sollte es nicht so sein. Baust du die GUI im EDT auf, verhinderst du das.

In welchem Thread laufen die GUI Elemente? Ich meine, wenn der main Thread abgearbeitet wurde, wird doch normalerweise das Programm beendet, aber die GUI Elemente laufen unabhängig vom main Thread weiter. Wie genau funktioniert das?
Das Program endet nicht mit Ende des main-Threads, sondern mit Ende des letzten non-daemon-Threads. Sowohl der Main-Thread, als auch der EDT sind so einer, deshalb hält der EDT das am Leben 😉
GUI-Events verarbeitet nur der EDT.
 

Zurück
Oben