SwingWorker和SwingUtilities.invokeLater之间的区别

时间:2010-03-18 17:13:08

标签: java swing multithreading

我需要在单独的线程中在Swing应用程序中运行一些方法。使用SwingWorker和SwingUtilities.invokeLater有什么区别。我应该使用哪一个在Swing应用程序中运行一个线程?我在

教程中找不到确切的信息

http://java.sun.com/docs/books/tutorial/uiswing/concurrency/index.html

2 个答案:

答案 0 :(得分:8)

如果您必须在EDT中运行某些内容,则使用

SwingUtilities.invokeLater

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

答案 1 :(得分:7)

看起来你想要:

    当您需要监控长时间运行的后台进程的状态时,
  • 使用SwingWorker

  • 如果您只想运行一个简短的任务但不需要反馈,请使用SwingUtilities.invokeLater。有点像火与难忘。请记住,它将在AWT事件调度线程中运行,因此您的应用程序在任务运行时不会处理任何事件。