我需要在Swing应用程序中运行一些方法,需要在单独的线程中执行。使用SwingWorker和SwingUtilities.invokeLater有什么区别?我应该使用哪个来在Swing应用程序中运行线程?我在教程中找不到确切的信息。
SwingUtilities.invokeLater
被用于必须在EDT中运行的内容。
如果您有一个长时间运行的任务,您需要使用SwingWorker
,因为它不在EDT上运行,所以不会在运行时导致GUI冻结。
看起来您想要:
在需要监控长时间后台进程的状态时,使用SwingWorker
如果只需要运行短期任务但不需要反馈,请使用SwingUtilities.invokeLater
。类似于“点火并忘记”。但请记住,它将在AWT事件分派线程中运行,因此在任务运行时,您的应用程序将不会处理任何事件。