2016-05-11 276 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 
      }); 
     });