SwingWorker 和 SwingUtilities.invokeLater 的区别

12
我需要在Swing应用程序中运行一些方法,需要在单独的线程中执行。使用SwingWorker和SwingUtilities.invokeLater有什么区别?我应该使用哪个来在Swing应用程序中运行线程?我在教程中找不到确切的信息。
2个回答

9

SwingUtilities.invokeLater被用于必须在EDT中运行的内容。

如果您有一个长时间运行的任务,您需要使用SwingWorker,因为它不在EDT上运行,所以不会在运行时导致GUI冻结。


谢谢。这通常是我想的,但我需要确认。 - Pawel Szulc

7

看起来您想要:

  • 在需要监控长时间后台进程的状态时,使用SwingWorker

  • 如果只需要运行短期任务但不需要反馈,请使用SwingUtilities.invokeLater。类似于“点火并忘记”。但请记住,它将在AWT事件分派线程中运行,因此在任务运行时,您的应用程序将不会处理任何事件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接