Что такое SwingUtilities. invokeLatergen

что такое SwingUtilities.invokeLatergen;
есть прога в ней один класс и куча методов.
В майн написано
public static void main(String[] args) {
generator2 gen = new generator2();
SwingUtilities.invokeLater(gen); // поехали

как происходит запуск программы?
раньше я просто вызывал методы в мейне но тут же созаем только экземпляр и далее эта хрень SwingUtilities.invokeLater(gen); // поехали
прочитал, что это что то что задает многопоточность. Но интересует именно сам запуск программы.

  • google: java tutorial invokelater
    http : // docs . oracle . com / javase / tutorial / uiswing / concurrency / initial.html

    Every program has a set of threads where the application logic begins. In standard programs, there's only one such thread: the thread that invokes the main method of the program class. In applets the initial threads are the ones that construct the applet object and invoke its init and start methods; these actions may occur on a single thread, or on two or three different threads, depending on the Java platform implementation. In this lesson, we call these threads the initial threads.
    Каждая программа имеет набор потоков в которых начинается логика приложения. В стандартных программах это только один поток: этот поток вызывает метод main() основного класса. В апплетах их больше, бла-бла-бла. В этом уроке мы называем такие потоки inital threads.

    In Swing programs, the initial threads don't have a lot to do. Their most essential job is to create a Runnable object that initializes the GUI and schedule that object for execution on the event dispatch thread. Once the GUI is created, the program is primarily driven by GUI events, each of which causes the execution of a short task on the event dispatch thread. Application code can schedule additionals tasks on the event dispatch thread (if they complete quickly, so as not to interfere with event processing) or a worker thread (for long-running tasks).
    В swing программах работы для initial threads немного. Их основная задача создать Runnable объект который инициализирует GUI и передать его для выполнения в EDT (event dispatch thread). Как только GUI создано, программа, главным образом, управляется событиями от GUI, в каждом их которых выполняется короткая задача в EDT. В коде можно реализовывать выполнение задач в EDT (если они короткие и не будут мешать работе swing) или в потоке worker для долговыполняющихся задач (Здесь имеется в виду SwingWorker см. google: java tutorial swingworker).

    ...

    Why does not the initial thread simply create the GUI itself? Because almost all code that creates or interacts with Swing components must run on the event dispatch thread. This restriction is discussed further in the next section.
    Почему не следует создавать GUI из initial threads? Потому как большинство кода который создаёт и взаимодействует со swing компонентами должен выполнятся в EDT. Это ограничение обсуждается далее, в следующем разделе.