开始开发JavaFX App我遇到了一些关于处理concurreny的问题。我知道来自JavaFX的并发工具(Service
,Task
,Timeline
),但我不知道在真正的JavaFX应用程序中使用它们的最佳方法。
我正在使用FXML,我想开始一个非同步的,反复出现的任务。这是在我的Service
应用程序或Main
类中创建Controller
的最佳方法吗?由于Service
将更新UI,我仍然需要对控制器的引用。
有没有人有一些最佳实践如何处理?
答案 0 :(得分:0)
最佳做法可能是将controller
视为访问FXML文件中声明的组件的方式,除此之外,即只是UI定义的一部分而没有任何域逻辑。没有充分的理由说明为什么你不能在同一个类中编写服务,但 也可能没有充分的理由。
答案 1 :(得分:0)
正如Knut所说,你可以在你的控制器中实现你的周期性任务。
仍然有改进的余地,您可以定义一个ServiceFactory,这可能很有用,因为您可能希望在您创建的每个服务上添加代码以记录此Thread上的内容/或在该上添加默认的错误处理程序例如服务。
如果您使用像Spring这样的IOC框架,它将使您能够轻松定义ThreadPool,以使用指定的参数为您的服务生成线程。