我正在使用javax.swing.Timer来安排和运行事件。但它似乎冻结了GUI。只是想知道这些事件是在单独的线程上运行还是我必须自己完成。
由于
答案 0 :(得分:8)
“虽然所有计时器都使用单个共享线程(由执行的第一个Timer对象创建)执行等待,但Timers的操作事件处理程序在另一个线程上执行 - 事件派发线程。这意味着该操作Timers的处理程序可以安全地对Swing组件执行操作。但是,这也意味着处理程序必须快速执行以保持GUI响应。“ - javax.swing.Timer
强调补充。
附录:SwingWorker
就是针对这种情况而设计的。特别是,它提供了一种方便的卸载工作方式,同时定期在EDT上重建进度。