JavaFX周期性后台任务我尝试周期性地在JavaFX应用程序后台线程中运行,这会修改一些GUI属性。我想我知道怎么用Task和Service来自javafx.concurrent如果不使用Thread#sleep()方法。如果我能用一些Executor从…Executors制作方法(Executors.newSingleThreadScheduledExecutor())我试着跑Runnable每5秒,就会重新开始javafx.concurrent.Service但它马上就挂起来了service.restart甚至service.getState()叫做。所以最后我用Executors.newSingleThreadScheduledExecutor(),它会引发我的Runnable每隔5秒Runnable运行另一个Runnable使用:Platform.runLater(new Runnable() {
//here i can modify GUI properties}它看起来很恶心:(有没有更好的方法Task或Service上课?
3 回答
呼唤远方
TA贡献1856条经验 获得超11个赞
Label.textProperty().
Label label = ...;EventStreams.ticks(Duration.ofSeconds(5)) // emits periodic ticks
.supplyCompletionStage(() -> getStatusAsync()) // starts a background task on each tick
.await() // emits task results, when ready
.subscribe(label::setText);
// performs label.setText() for each resultCompletionStage<String> getStatusAsync() {
return CompletableFuture.supplyAsync(() -> getStatusFromNetwork());}String getStatusFromNetwork() {
// ...}添加回答
举报
0/150
提交
取消
