Java在新线程上运行javax.swing.Timer?

时间:2010-08-16 03:18:33

标签: java multithreading swing timer

我正在使用javax.swing.Timer来安排和运行事件。但它似乎冻结了GUI。只是想知道这些事件是在单独的线程上运行还是我必须自己完成。

由于

1 个答案:

答案 0 :(得分:8)

“虽然所有计时器都使用单个共享线程(由执行的第一个Timer对象创建)执行等待,但Timers的操作事件处理程序在另一个线程上执行 - 事件派发线程。这意味着该操作Timers的处理程序可以安全地对Swing组件执行操作。但是,这也意味着处理程序必须快速执行以保持GUI响应。“ - javax.swing.Timer

强调补充。

附录:SwingWorker就是针对这种情况而设计的。特别是,它提供了一种方便的卸载工作方式,同时定期在EDT上重建进度。