Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

like image 974
Andy Hin Avatar asked Aug 16 '10 03:08

Andy Hin


1 Answers

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

like image 76
trashgod Avatar answered Nov 17 '22 05:11

trashgod