0
我正在寻找一个想法如何同步两个javafx.concurrent.Service。 每个服务正在调用REST端点来加载数据。我喜欢同步这两个服务。 只有在读取这两项服务时,我才喜欢更新我的屏幕元素。 这两个服务都使用EventHandler回调。 JavaFx中是否存在一个标准模式?JavaFx同步两个服务
感谢您的支持。
问候, 曼努埃尔
我正在寻找一个想法如何同步两个javafx.concurrent.Service。 每个服务正在调用REST端点来加载数据。我喜欢同步这两个服务。 只有在读取这两项服务时,我才喜欢更新我的屏幕元素。 这两个服务都使用EventHandler回调。 JavaFx中是否存在一个标准模式?JavaFx同步两个服务
感谢您的支持。
问候, 曼努埃尔
一个简单的解决办法是听服务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
});
});