Java Swing - działa na EDT

Mam kilka pytań dotyczących Swinga i używania EDT do aktualizacji GUI. Właśnie zacząłem czytać na ten temat, więc jestem w pełni początkującym w tej dziedzinie:

Jakie operacje są wymagane do uruchomienia na EDT? Jeśli tak się nie stanie, czy po prostu powstaje wyjątek?Czy są jakieś konkretne czasy, kiedy faktycznie korzystamy z EDT automatycznie?jeśli zaplanujemy zadanie za pomocąSingUtilities.invokeLater kolejkujemy go do bieżącej kolejki zadań aktualizacji GUI?Domyślam się, że dostęp do powyższej kolejki jest zsynchronizowany lub używana jest jakaś zbierana kolekcja, ale jeśli zaplanuję dwa zadania aktualizacji GUI z dwóch wątków w tle, nie można powiedzieć, które z nich zostanie dodane jako pierwsze? Na przykład, jeśli Wątek 1 PIERWSZY zgłosi zadanie ustawienia tekstu JLable na „tak”, a następnie, niedługo później, pojawi się drugi wątek i przekaże zadanie ustawienia tej wartości na „nie”, czy mamy gwarancję, że wynikiem będzie „tak” lub po prostu kwestia tego, jak te rzeczy są zaplanowane przez system operacyjny?

Jak dokładnie to zapewnia SwingWorkerdone() metoda jest uruchamiana na EDT? Ustawia następujący kod:

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

więc zastanawiałem się, czy FutureTask w jakiś sposób to zapewniainvokeLater jest nazywany?

Dziękuję za wszystkie odpowiedzi.

questionAnswers(4)

yourAnswerToTheQuestion