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.

History

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.

Documentation

Please refer to the javadoc for the API documentation and the examples.

Download

You can download the latest release of the SwingWorker project.