How EDT starts the thread execution ???
You have this wrong. Read the documentation. SwingUtilities#invokeLater (or invokeAndWait) doesn't start* a new thread. What it does is this:
Causes doRun.run() to be executed asynchronously on the AWT event dispatching thread.
* If and only if the EDT isn't already started, then the call to this method will result in launching the EDT. That's not anything a client program has to concern itself with.