Java Swing - ejecutándose en EDT

Tengo un par de preguntas con respecto a Swing y el uso de EDT para las actualizaciones de GUI. Acabo de empezar a leer sobre estas cosas, así que soy un principiante en esta área:

¿Qué operaciones se requieren para ejecutarse en la EDT? Si no lo hacen, ¿es simplemente una excepción planteada?¿Hay algún momento específico en el que realmente estemos en la EDT automáticamente?Si programamos una tarea usandoSingUtilities.invokeLater Lo colocamos en la cola actual de las tareas de actualización de GUI, ¿verdad?Los accesos a la cola anterior supongo que están sincronizados, o se usa alguna recopilación concurrente, pero si programo dos tareas de actualización de GUI, desde dos subprocesos en segundo plano, ¿es imposible decir cuál se agregará primero? Por ejemplo, si el subproceso 1 PRIMERO envía una tarea de configuración del texto de un JLable a "sí", y luego, poco tiempo después, aparece el segundo hilo y envía la tarea de establecer ese valor a "no", ¿tenemos la garantía de que? el resultado será "sí", o es simplemente una cuestión de cómo estas cosas están programadas por el sistema operativo?

¿Cómo garantiza SwingWorker exactamente quedone() método se ejecuta en EDT? Se establece el siguiente código:

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

así que me preguntaba si FutureTask de alguna manera se asegura de queinvokeLater ¿se llama?

Gracias por todas sus respuestas.

Respuestas a la pregunta(4)

Su respuesta a la pregunta