【问题标题】:Design issue- should use seperate thread for GUI?设计问题 - 应该为 GUI 使用单独的线程?
【发布时间】:2013-06-22 18:49:35
【问题描述】:

我正在用 Java 构建一个带有 GUI 的小软件。 我有一个连续运行的算法(几乎 24/7)(我在 GUI 中有一个停止/启动按钮) 此算法应更新列表并在 GUI 上显示日志。 问题是 - 我应该为此过程(算法)创建一个单独的类或线程, 1) 如果答案是肯定的 - 我应该将我应该更新的 GUI 元素作为参数传输到该过程吗?是否会导致更新 GUI 出现问题? 2) 如果没有 - 我应该如何设计?

非常感谢!

【问题讨论】:

  • 你使用什么(框架/lib)在你的应用程序中构建 ui?

标签: java multithreading user-interface


【解决方案1】:

您应该用于繁重的任务SwingWorker,专为这种情况而设计。在这里你有一篇很好的文章why do we need SwingWorker?。 如果您的算法需要例如 5 秒并且您在与 gui 相同的线程中运行,则您需要这个原因,它会冻结您的视图直到完成。

顺便说一句,所有 gui 组件都必须在 Event Dispatch Thread 中更新,因此您不必在另一个线程中更新它们,因为它们不会更新。

【讨论】:

    【解决方案2】:

    问题是——我应该为此创建一个单独的类或线程 过程(算法),

    是的,这是一种常见的做法。

    我是否应该将应该更新的 GUI 元素作为参数传输 到那个程序?是否会导致更新 GUI 出现问题?

    你真的不需要通过任何东西。您唯一需要确保的是与 ui 元素的所有交互都在 ui 线程中完成(以避免并发问题)。通常这是通过创建执行与 ui 相关的工作的可运行对象并将其传递给您正在使用的 UI 框架以在 ui 线程中调度来完成的。

    【讨论】:

      猜你喜欢
      • 2012-09-21
      • 2011-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-08
      相关资源
      最近更新 更多