我想在CompletableFuture List中做一些未来完成的订单

时间:2017-06-16 07:00:22

标签: java future completable-future

我有一些服务返回 CompletableFutures ,就像这样

&array

此代码打印值迭代顺序。但我希望首先使用 CompletionService 来快速打印结果。

     device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());

     device.wait(Until.hasObject(By.pkg("com.android.systemui").depth(0)), 2000);

     try {
         device.findObject(new UiSelector().textContains("START").className("android.widget.Button")).click();
     }
     catch (UiObjectNotFoundException e){
         e.printStackTrace();
     }

我试过这种方式。它正在发挥作用。但我觉得很难看。还有更好的办法吗?

1 个答案:

答案 0 :(得分:1)

您正在使用CompletableFutureFuture一样以阻塞的方式运行无限循环。您必须指定回调函数,该函数将在您的未来完成时调用。

所以你可以这样做:

Set<CompletableFuture<String>> futures = service.getSomething();
futures.forEach(future -> future.whenComplete(
        (result, throwable) -> System.out.println(result)
));

CompletableFuture
    .allOf(futures.toArray(new CompletableFuture[0]))
    .join();