首页 文章

JavaFx同步两个服务

提问于
浏览
0

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

感谢您的支持 .

此致,曼努埃尔

1 回答

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

相关问题