2016-05-11 210 views
0

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

感谢您的支持。

问候, 曼努埃尔

回答

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