Search code examples
javaswingawtevent-dispatch-thread

Make thread run on non EDT (event dispatch thread) thread from EDT


I have a method running on the EDT and within that I want to make it execute something on a new (non EDT) thread. My current code is follows:

@Override
    public void actionPerformed(ActionEvent arg0) {
//gathering parameters from GUI

//below code I want to run in new Thread and then kill this thread/(close the JFrame)
new GameInitializer(userName, player, Constants.BLIND_STRUCTURE_FILES.get(blindStructure), handState);
}

Solution

  • You can create and start a new Java Thread that executes your method from within the EDT thread :

    @Override
        public void actionPerformed(ActionEvent arg0) {
    
            Thread t = new Thread("my non EDT thread") {
                public void run() {
                    //my work
                    new GameInitializer(userName, player, Constants.BLIND_STRUCTURE_FILES.get(blindStructure), handState);
                }
    
            };
            t.start();
        }