В каком случаи необходимо использовать SwingUtilities.invokeLater, а в каком SwingWorker?
SwingUtilities.invokeLater
SwingWorker