【问题标题】:Difference between SwingWorker and SwingUtilities.invokeLaterSwingWorker 和 SwingUtilities.invokeLater 的区别
【发布时间】:2011-01-29 03:18:43
【问题描述】:

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

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

【问题讨论】:

    标签: java swing multithreading


    【解决方案1】:

    SwingUtilities.invokeLater 用于如果您有必须在 EDT 中运行的内容。

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

    【讨论】:

    • 谢谢。这通常是我的想法,但我需要确认
    【解决方案2】:

    看起来你想要:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-25
      • 2011-11-04
      相关资源
      最近更新 更多