java - 设计问题 - 应该为 GUI 使用单独的线程吗?

标签 java multithreading user-interface

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

非常感谢!

最佳答案

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

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

关于java - 设计问题 - 应该为 GUI 使用单独的线程吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17254197/

相关文章:

java - 用保护子句替换嵌套条件的模式,同时仍对绝大多数情况(但不是全部)执行某些操作

java - Android布局文件夹配置

java - Joda 时间操纵获取每月 15 日和最后一天

c - 如何在 ANSI C 中终止一个 pthread

c - 进程中的特定线程是否可以创建多个作业?

swift - 如何创建一个在 XCTest 中定义按钮或文本字段的 swift 文件?

java - 如何在另一个动态图像下添加背景图像?

java - 我可以在枚举中声明枚举来指定/限制 Java 映射中的键和值吗?

multithreading - 使用 std::future 和 valgrind 的一次性事件通信

user-interface - 如何修复分屏?