JavaFx同步两个服务

时间:2016-05-11 16:04:32

标签: rest service javafx synchronization

我正在寻找一个如何同步两个javafx.concurrent.Service的想法。 每个服务都调用REST端点来加载数据。我喜欢同步这两种服务。 只有当两个服务都被读取时,我才更新我的屏幕元素。 这两个服务都在使用EventHandler回调。 JavaFx中是否有标准模式来执行此操作?

感谢您的支持。

此致 曼努埃尔

1 个答案:

答案 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
            });
        });