Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用相关任务更新GUI_Java_Multithreading_Swing_User Interface_Dependencies - Fatal编程技术网

Java 使用相关任务更新GUI

Java 使用相关任务更新GUI,java,multithreading,swing,user-interface,dependencies,Java,Multithreading,Swing,User Interface,Dependencies,我正在开发一个复杂的多线程应用程序,它与一个用户和多个服务器进行交互。我想向用户显示一致的状态。比如说,当属性A发生变化时,属性B、C、D变得不一致,需要更新——更新可能需要一些复杂的算法来运行,这取决于其他属性。但是属性E不依赖于A,因此它不需要更新 我的问题是,任何线程都可以随时更改任何属性,当然,使用synchronized。因此,当线程使用获取的更新数据完成任务时,这些数据可能已经过时。在我的应用程序的理论推理中,当不需要其他更新时,可能存在一个一致的状态——我想向用户显示这一点 GUI

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

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


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

Java Swing提供了侦听器,这样作为开发人员,您就可以知道什么时候发生了动作,比如按下按钮

同样,线程可以提供操作侦听器,以便Swing GUI可以知道何时更新属性

您必须编写这些操作侦听器。在Javadoc中可以找到一个示例


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

我不确定是否理解你想要什么,但可能你看起来像观测者模式,在swing gui应用程序中,请参见
PropertyChangeListener
我想做一些更复杂的事情,但现在看来事件监听器应该足够了。谢谢