When writing a multi-threaded application using Swing, there are two constraints to keep in mind: (refer to How to Use Threads for more details):
These constraints mean that a GUI application with time intensive computing needs at least two threads: 1) a thread to perform the lengthy task and 2) the Event Dispatch Thread (EDT) for all GUI-related activities. This involves inter-thread communication which can be tricky to implement.
SwingWorker
is designed for situations where you need to have a long
running task run in a background thread and provide updates to the UI
either when done, or while processing.
This project is a backport of SwingWorker
included into 1.6.
The
original SwingWorker
version was published back in 1998 by
Hans Muller and Kathy Walrath. Since that time a number of modified
SwingWorkers
were published. The
last version we are aware of was published by Joseph Bowbeer.
Swing team got a number of request to include SwingWorker
into the swing package. In jdk1.6 javax.swing.SwingWorker
was introduced.
Please refer to the javadoc for the API documentation and the examples.
You can download the latest release of the SwingWorker project.