Event dispatching thread
From Seo Wiki - Search Engine Optimization and Programming Languages
The event dispatching thread (EDT) is a background thread used in Java to process events from the Abstract Window Toolkit (AWT) graphical user interface event queue. These events are primarily update events that cause user interface components to redraw themselves, or input events from input devices such as the mouse or keyboard. The AWT uses a single-threaded painting model in which all screen updates must be performed from a single thread. The event dispatching thread is the only valid thread to update the visual state of visible user interface components. Updating visible components from other threads is the source of many common bugs in Java programs that use Swing .
Executing code in the EDT
Other application threads can execute code in the event dispatching thread by defining the code in a Template:Javadoc:SE object and pass it to the Template:Javadoc:SE helper class or to the Template:Javadoc:SE. Two methods of these classes allow:
- synchronous code execution (Template:Javadoc:SE or Template:Javadoc:SE)
- and asynchronous code execution (Template:Javadoc:SE or Template:Javadoc:SE)
from the EDT.
invokeAndWait() should never be called from the event dispatching thread—it will throw an exception. The method Template:Javadoc:SE or Template:Javadoc:SE can be called to determine if the current thread is the event dispatching thread.
Another solution for executing code in the EDT is using the worker design pattern. The
SwingWorker class, developed by Sun Microsystems, is an implementation of the worker design pattern, and as of Java 6 is part of standard Swing distribution. The open source project Foxtrot provides another synchronous execution solution similar to
- ↑ This problem is not specific to Java Swing. There is the same issue in most Widget toolkits, as for example Windows Forms, where the BackgroundWorker class performs the same purpose as SwingWorker in Java.
- Abstract Window Toolkit (AWT)
- Swing (Java)
- BackgroundWorker, an equivalent .NET Framework class for SwingWorker
- Template:Javadoc:SE (Swing API Javadoc documentation)
- Template:Javadoc:SE (AWT API Javadoc documentation)
- Swing API documentation
- AWT API documentation
- The Event-Dispatching Thread
- SwingWorker description from the Swing tutorial
- AWT/Swing event handling article about event pumping, dispatch and processing, and the EDT
- Foxtrot project home page
- Spin project home page