【问题标题】:Java Threading - Swing appJava 线程 - Swing 应用程序
【发布时间】:2012-03-12 17:43:36
【问题描述】:

我正在尝试学习如何线程化一个类(特别是类中的一个方法),我遇到了Thread()SwingWorker()。这是一个摇摆应用程序。我应该选择哪个,为什么?另外,是否有一些通用的方法可以为现有方法添加线程实现?

谢谢

【问题讨论】:

  • 这两个类的javadoc是怎么说的?你的结论是什么?

标签: java multithreading swing swingworker


【解决方案1】:

SwingWorker 主要用于在 Java 中执行后台进程 Swing 是基于 UI 的应用程序,例如在 UI 中按下按钮时,您希望在后台执行一些较长的进程。 线程通常用于 Java 程序中的多任务处理,例如一次执行两个操作。 线程可以从 Runnable 接口实现,也可以从线程类继承。 查看 Oracle Java 文档。

【讨论】:

    【解决方案2】:

    使用 Swingworkers 可能会让您的喜欢更轻松,因为它旨在完全满足您的需求。 Oracle 网站上有一个很好的tutorial 可以帮助您入门。 本质上,在 Swing 应用程序中,您需要确保:

    • 任何与 GUI 交互的东西都在EDT (Event Dispatch Thread) 中运行
    • 长任务不会在 EDT 上运行,因为如果这样做,它们会在您的计算运行时冻结 GUI

    Swingworkers 可以很好地处理这两件事。

    【讨论】:

      【解决方案3】:

      Thread 类是创建线程所需的基本部分。 JDK 提供“低级”API(查看类 Thread、接口 Runnable、synchoronized 关键字、方法wait()notify())或更高级别的 API(SwingWorker、Timer、executors 框架)。

      网络上有很多教程。先学基础。阅读 Thread 的 javadoc,找到一些例子,和他们一起玩。然后通过 Timer 和 SwingWorker。这会很简单。然后,当您了解它的工作原理后,花点时间研究执行器、线程池等。

      线程愉快!

      【讨论】:

        猜你喜欢
        • 2012-03-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-23
        • 1970-01-01
        • 2011-02-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多