我正在寻找一个如何同步两个javafx.concurrent.Service的想法。 每个服务都调用REST端点来加载数据。我喜欢同步这两种服务。 只有当两个服务都被读取时,我才更新我的屏幕元素。 这两个服务都在使用EventHandler回调。 JavaFx中是否有标准模式来执行此操作?
感谢您的支持。
此致 曼努埃尔
答案 0 :(得分:1)
一个简单的解决方案可能是收听服务的Worker.State
:
firstService.stateProperty().isEqualTo(State.SUCCEEDED)
.and(secondService.stateProperty().isEqualTo(State.SUCCEEDED))
.addListener((ov, b, b1) -> {
if(b1){
// udpateUI
}
});
如果Java 8是一个选项,您可以查看其CompletableFuture
,并使用例如
CompletableFuture<Void> future1 = CompletableFuture.runAsync(() -> service1);
CompletableFuture<Void> future2 = CompletableFuture.runAsync(() -> service2);
CompletableFuture<Void> finished = CompletableFuture.allOf(future1, future2);
finished.thenRun(() -> {
Platform.runLater(() -> {
// updateUI
});
});