Event dispatching thread

From Seo Wiki - Search Engine Optimization and Programming Languages

Jump to: navigation, search

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 [1].


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:

from the EDT.

The method 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 SwingWorker.


  1. 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.

See also

External links

Personal tools

Served in 0.084 secs.