Concurrency in Swing
https://docs.oracle.com/javase/tutorial/uiswing/concurrency/index.html
A Swing programmer deals with the following kinds of threads:
- Initial Thread, the threads that execute initial application code https://docs.oracle.com/javase/tutorial/uiswing/concurrency/initial.html
- Event Dispatch Thread, where all event-handling code is executed. https://en.wikipedia.org/wiki/Event_dispatching_thread
- Worker Thread and SwingWorker, also known as background threads, where time-consuming background tasks are executed. https://docs.oracle.com/javase/tutorial/uiswing/concurrency/worker.html