我想从我的 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;
}
};
}
}