Revision as of 15:36, 6 November 2009 by Admin (Talk | contribs)

What is a background thread and why do I need one?

As with most user interface (UI) toolkits, Swing is single threaded. That means there is one and only one thread that should create or alter the state of UI components, and that is the AWT Event Dispatch Thread (also known as the EDT or the "event thread"). It processes things like key and mouse events and calls components to respond to them.

This also means that code that responds to a key or mouse event, or some call triggered by one, should run very quickly, because the user can by typing or clicking, but the entire application is blocked from responding to more events until your code exits. So sometimes you will want to move expensive or slow work onto a background thread.

A background thread is any thread that is not the event thread.

If you are running on some other thread, but need to modify some component, a simple way to do this is
    EventQueue.invokeLater(new Runnable() {
      public void run() {
        //this code can modify components

Note that the caveat about Swing includes creating components - it is provably not safe to even construct Swing components on a background thread, because of synchronization on Component.getTreeLock().

Not logged in. Log in, Register

By use of this website, you agree to the NetBeans Policies and Terms of Use. © 2012, Oracle Corporation and/or its affiliates. Sponsored by Oracle logo