Threads can be difficult to use, and they tend to make programs harder to debug.
To avoid the possibility of deadlock, you must take extreme care that any threads you create don't invoke any methods on Swing components. Remember, once a Swing component has been realized, only the event-dispatching thread should affect or query the component. If you aren't familiar with the role of the event-dispatching thread, please read Threads and Swing and Threads and Event Handling . Despite the dangers, threads can be invaluable. You can use them to improve your program's perceived performance.