【发布时间】:2015-05-17 20:29:52
【问题描述】:
我有一个问题。我正在为桌面创建 JavaFX 应用程序。我的应用程序中有线程在后台运行,我们假设它正在从互联网下载文件。
我已阅读有关 JavaFX 中的并发性的文章。有特殊的类任务。我已经用 Task 扩展了我的课程。但它只能返回一些值,然后它将关闭。
但是我需要在整个应用程序生命周期内运行此任务,并且当下载例如文件时,它应该将结果发布到 UI 线程,更准确地说是在控制器上更新一些 ui 组件。
我知道 Task 有 updateProgress 方法,也许我不仅可以绑定它来接收整数,还可以绑定复杂的对象。
或者在我的情况下还有其他好的方法可以遵循。
请帮忙解决这个问题。
【问题讨论】:
-
有什么特殊原因让任务在整个应用程序生命周期中运行而不是在需要时创建它?
-
@ItachiUchiha 问题的答案取决于是否从 UI 请求文件下载(或后台线程所做的任何事情)(例如单击“下载”按钮),在这种情况下,您可以创建按需任务,或者是否完全独立于 UI 操作。
-
不,下载文件只是示例,好吧,我会老实说,邮件检查服务会贯穿整个应用程序生命周期
-
ScheduledService 适合您的场景。还有其他方法可以实现它,例如,TimerTask。
-
谢谢,我会尝试,发表你的评论作为答案
标签: java multithreading concurrency javafx javafx-2