我有期货清单
List<Future<Boolean>> futures = service.invokeAll( Arrays.asList( callable1, callable2 ));
我需要的是一种获取结果列表的方法
你能在java中提供解决方案吗?
类似于whenAll()...
答案 0 :(得分:4)
你所追求的是这样的allMatch()
方法:
boolean result = futures.stream().allMatch(booleanFuture -> {
try
{
return booleanFuture.get();
}
catch (InterruptedException | ExecutionException e)
{
throw new RuntimeException(e);
}
});
如果您真的想要一个结果列表,那么map()
就是这样:
List<Boolean> results = futures.stream().map(booleanFuture -> {
try
{
return booleanFuture.get();
}
catch (InterruptedException | ExecutionException e)
{
throw new RuntimeException(e);
}
}).collect(Collectors.toList());
答案 1 :(得分:0)
修改@Vampire的结果 如果是很多数据,你也可以使用如下所示的parallelStream
List<Boolean> results = futures.parallelStream().map(booleanFuture -> {
try
{
return booleanFuture.get();
}
catch (InterruptedException | ExecutionException e)
{
throw new RuntimeException(e);
}
}).collect(Collectors.toList());