There is no way to start your own event thread. You need to use java.awt.EventQueue::invokeLater to run tasks on the event thread (SwingUtilities just delegates to that). You should never manipulate Swing on any thread where isDispatchThread is false.