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;
}
};
}
}