定期JavaFX服务

Blu*_*bel 5 java javafx-2

我想从我的JavaFX应用程序定期执行任务.该任务从远程流中提取数据.

虽然我知道我可以使用如下建议的定时器:

JavaFX定期后台任务

我相信这应该可以使用JavaFX Service对象完成.在Javadoc中提到了指定一个自定义执行程序(这里会想到ScheduledThreadPoolExecutor),但是如何指定周期和延迟呢?理想情况下,这将使用服务的通常启动,重置,重启和状态绑定...

public class MyFirstLineService extends Service<String> {
     private StringProperty url = new SimpleStringProperty(this, "url");
     public final void setUrl(String value) { url.set(value); }
     public final String getUrl() { return url.get(); }
     public final StringProperty urlProperty() { return url; }

     public MyFirstLineService() {
         setExecutor(new ScheduledThreadPoolExecutor());
     }

     protected Task createTask() {
         final String _url = getUrl();
         return new Task<String>() {
             protected String call() throws Exception {
                 URL u = new URL(_url);
                 BufferedReader in = new BufferedReader(
                         new InputStreamReader(u.openStream()));
                 String result = in.readLine();
                 in.close();
                 return result;
             }
         };
     }
 }
Run Code Online (Sandbox Code Playgroud)

jew*_*sea 3

JavaFX 问题跟踪器 RT18702中请求 ScheduledService 。

跟踪器包括尚未合并到 2.2 分支中的初步实现的源代码。如果需要,您可以查看该来源,看看它是否有助于改进您的解决方案。