2016-05-11 1 views
0

Я ищу идею о синхронизации двух javafx.concurrent.Service. Каждая служба вызывает конечную точку REST для загрузки данных. Мне нравится синхронизировать обе службы. Только когда обе службы прочитаны, мне нравится обновлять элементы экрана. Обе службы работают с обратными вызовами EventHandler. Есть ли стандартный шаблон в JavaFx для этого?JavaFx синхронизирует две службы

Спасибо за вашу поддержку.

С уважением, Manuel

ответ

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