使用相关任务更新GUI

时间:2013-06-11 23:27:14

标签: java multithreading swing user-interface dependencies

我正在开发一个复杂的多线程应用程序,它与用户和多个服务器进行交互。我想向用户显示一致的状态。假设属性A发生变化时,属性B,C,D变得不一致并需要更新 - 更新可能需要运行一些复杂的算法,这取决于其他属性。但是属性E不依赖于A,所以它不需要更新。

我的问题是任何线程都可以随时更改任何属性,当然使用synchronized。因此,当线程使用获取的更新数据完成其任务时,该数据可能已经过时。在我的应用程序的理论推理中,当没有其他更新需要时,可能存在一致的状态 - 我希望向用户显示。

如何在GUI多线程应用程序中管理这些依赖项?目前,我使用的是时间戳,但这不足以解决更复杂的依赖关系。我正在考虑使用gradle或maven,但它似乎有点矫枉过正,GUI应用程序应保持快速响应。我有一个解决方案,但是后来它可能需要额外的扩展,因此我宁愿使用一些现有的解决方案。

1 个答案:

答案 0 :(得分:1)

Java Swing提供了侦听器,以便您作为开发人员可以知道何时发生操作,例如按下按钮。

以同样的方式,您的线程可以提供动作侦听器,以便Swing GUI可以知道何时更新属性。

您必须编写这些动作侦听器。在EventListenerList

的Javadoc中找到了一个示例

阅读本文Event Listener,了解编写事件监听器的另一个例子。