我有一些服务返回 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();
}
我试过这种方式。它正在发挥作用。但我觉得很难看。还有更好的办法吗?
答案 0 :(得分:1)
您正在使用CompletableFuture
与Future
一样以阻塞的方式运行无限循环。您必须指定回调函数,该函数将在您的未来完成时调用。
所以你可以这样做:
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();