javax.swing.SwingWorker
. SwingWorker
itself is an abstract class; you must
define a subclass in order to create a SwingWorker
object; anonymous inner classes are often useful for creating very
simple SwingWorker
objects.
SwingWorker
provides a number of
communication and control features:
SwingWorker
subclass can define a method,
done
, which is automatically invoked on the event
dispatch thread when the background task is finished.
SwingWorker
implements
java.util.concurrent.Future
.
This interface allows the background task to provide a return
value to the other thread. Other methods in this interface allow
cancellation of the background task and discovering whether the
background task has finished or been cancelled.
SwingWorker.publish
, causing
SwingWorker.process
to be invoked from the event
dispatch thread.
javax.swing.SwingWorker
class was added to the Java
platform in Java SE 6. Prior to this, another class, also called
SwingWorker
, was widely used for some of the same
purposes. The old SwingWorker
was not part of the Java
platform specification, and was not provided as part of the JDK.
The new javax.swing.SwingWorker
is a completely new
class. Its functionality is not a strict superset
of the old SwingWorker
. Methods in the two classes that
have the same function do not have the same names. Also, instances of
the old SwingWorker
class were reusable, while a new instance
of javax.swing.SwingWorker
is needed for each new
background task.
Throughout the Java Tutorials, any mention of SwingWorker
now refers to javax.swing.SwingWorker
.