Java EventQueue. Por que tudo deveria estar no método invokelater?

no livro que estou lendo, todos os exemplos de GUI com multithreading têm algo assim:

public static void main(String[] args) throws Exception
{
    EventQueue.invokeLater(new Runnable()
    {
        public void run()
        {
            JFrame frame = new SomeKindOfFrame();
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setVisible(true);
        }
    });
}

(quero dizer EventQueue). mas o código não é executado automaticamente no segmento principal (EDT)?

questionAnswers(2)

yourAnswerToTheQuestion