My understanding is that if I start up another thread to perform some actions, I would need to SwingUtilities.invokeAndWait or SwingUtilities.invokeLater<
SwingUtilities.invokeAndWait
SwingUtilities.invokeLater<
In my opinion you should almost never use invokeAndWait(). If something is going to take awhile that will lock your UI.
invokeAndWait()
Use a SwingWorker for this kind of thing. Take a look at Improve Application Performance With SwingWorker in Java SE 6.
SwingWorker