Java Swing - rodando em EDT

Eu tenho um par de perguntas sobre Swing e usando EDT para atualizações GUI. Eu comecei a ler sobre essas coisas, então sou um iniciante nessa área:

Quais operações são necessárias para executar no EDT? Se não, é simplesmente uma exceção levantada?Há algum momento específico em que realmente estamos no EDT automaticamente?se agendarmos uma tarefa usandoSingUtilities.invokeLater nós enfileiramos isto para a fila atual de tarefas de atualização de GUI certo?Acessos para a fila acima eu acho que são sincronizados, ou alguma coleção simultânea é usada, mas se eu agendar duas tarefas de atualização da GUI, a partir de dois segmentos de fundo, é impossível dizer qual deles será adicionado primeiro? Por exemplo, se o Thread 1 FIRST enviar uma tarefa de configurar o texto de um JLable para "yes" e, em seguida, pouco tempo depois, o segundo thread aparecer e enviar a tarefa de configurar esse valor para "no", garantimos que o resultado será "sim", ou é simplesmente uma questão de como essas coisas são agendadas pelo sistema operacional?

Como exatamente o SwingWorker garante quedone() método é executado em EDT? Define o seguinte código:

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

então eu queria saber se FutureTask de alguma forma garante queinvokeLater é chamado?

Obrigado por todas as suas respostas.

questionAnswers(4)

yourAnswerToTheQuestion