Вот решение, использующее Java 8 и ReactFX . Предположим, что вы хотите периодически пересчитывать значение 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 result
CompletionStage getStatusAsync() {
return CompletableFuture.supplyAsync(() -> getStatusFromNetwork());
}
String getStatusFromNetwork() {
// ...
}
По сравнению с решением Сергея вы не посвящаете весь поток получать статус из сети, а вместо этого используете общий поток пул для этого.