如何在JavaFX MVMM应用程序中正确实现多线程

如何在JavaFX MVMM应用程序中正确实现多线程,java,javafx,mvvm,Java,Javafx,Mvvm,我正在寻找一种在MVVM体系结构中线程化ViewModels的方法,而不必到处使用任务 我的理想解决方案是: 1个应用程序线程(带视图) 1个背景线程(带viewModel) 在2之间传递消息 ViewModels在每个方法中的行为仍然与普通Java类一样,没有Tasks/Service/Platform.runlater 有没有一种方法可以做到这一点而不会使代码膨胀?这可能不会按照您希望的方式工作。视图模型通常通过绑定属性与视图通信。因此,视图模型的属性必须始终在应用程序线程上更新。 建议

我正在寻找一种在MVVM体系结构中线程化ViewModels的方法,而不必到处使用任务

我的理想解决方案是:

  • 1个应用程序线程(带视图)
  • 1个背景线程(带viewModel)
  • 在2之间传递消息
  • ViewModels在每个方法中的行为仍然与普通Java类一样,没有Tasks/Service/Platform.runlater

有没有一种方法可以做到这一点而不会使代码膨胀?

这可能不会按照您希望的方式工作。视图模型通常通过绑定属性与视图通信。因此,视图模型的属性必须始终在应用程序线程上更新。
建议的JavaFX处理并发后台活动的方法是使用服务。但是,如果您不喜欢,也许值得在这里看一看:

您是否尝试过适应,或者是为了实现您的目标?我不知道必须在应用程序线程上更新属性,在这种情况下,我觉得很难绕过服务。实际上,我在ViewModel和Model层之间使用了一个实用程序层,大部分繁重的计算都是在这个层进行的,所以也许我可以找到一种方法。我会研究你的建议,否则我会使用服务。虽然,我对服务的问题不是语法,而是在哪些任务需要放在服务中,哪些任务不需要之间没有明确的界限。我对替代解决方案的搜索主要是为所有后台任务(而不仅仅是相对较重的任务)寻找一致的解决方案。