Java does javax.swing.Timer run on new thread?

I am using javax.swing.Timer to schedule and run events. But it seems to be freezing the GUI. Just wanted to know whether these events are run on a seperate thread or whether I have to do it myself.

Thanks

Answer

“Although all Timers perform their waiting using a single, shared thread (created by the first Timer object that executes), the action event handlers for Timers execute on another thread — the event-dispatching thread. This means that the action handlers for Timers can safely perform operations on Swing components. However, it also means that the handlers must execute quickly to keep the GUI responsive.”—javax.swing.Timer

Emphasis added.

Addendum: SwingWorker was designed for just this scenario. In particular, it offers a convenient way to offload work while periodically reporing progress on the EDT.

Leave a Reply

Your email address will not be published. Required fields are marked *