SwingWorker和SwingUtilities.invokeLater之间的区别

Paw*_*ulc 11 java swing multithreading

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

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

Mic*_*ers 8

SwingUtilities.invokeLater 如果你有必须在EDT中运行的东西,则使用它.

如果你有一个长时间运行的任务,而不是你需要使用SwingWorker,因为它并不在美国东部时间运行,因此不会导致GUI冻结,而它运行.


Jus*_*ier 7

看起来你想要:

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

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