Java Swing - läuft auf EDT

Ich habe ein paar Fragen zu Swing und zur Verwendung von EDT für GUI-Updates. Ich habe gerade angefangen, über dieses Zeug zu lesen, also bin ich ein voller Anfänger in diesem Bereich:

Welche Operationen sind erforderlich, um auf dem EDT ausgeführt zu werden? Wenn nicht, wird einfach eine Ausnahme ausgelöst?Gibt es bestimmte Zeiten, zu denen wir automatisch am EDT teilnehmen?wenn wir eine Aufgabe mit planenSingUtilities.invokeLater Wir reihen es in die aktuelle Warteschlange der GUI-Update-Aufgaben oder?Zugriffe auf die oben genannte Warteschlange werden vermutlich synchronisiert oder es wird eine gleichzeitige Sammlung verwendet. Wenn ich jedoch zwei GUI-Aktualisierungsaufgaben aus zwei Hintergrundthreads einplane, ist es unmöglich zu sagen, welche zuerst hinzugefügt werden? Wenn beispielsweise Thread 1 FIRST die Aufgabe sendet, den Text einer JLable auf "yes" zu setzen, und kurze Zeit später der zweite Thread die Aufgabe sendet, diesen Wert auf "no" zu setzen, ist dies garantiert das Ergebnis wird "Ja" sein, oder ist es einfach eine Frage, wie diese Dinge vom Betriebssystem geplant werden?

Wie genau sorgt der SwingWorker dafür?done() Methode wird auf EDT ausgeführt? Es setzt den folgenden Code:

  future = new FutureTask<T>(callable) {
               @Override
               protected void done() {
                   doneEDT();
                   setState(StateValue.DONE);
               }
           };

Also habe ich mich gefragt, ob FutureTask das irgendwie sicherstelltinvokeLater wird genannt?

Vielen Dank für alle Ihre Antworten.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage