我有期货清单

List<Future<Boolean>> futures = service.invokeAll( Arrays.asList( callable1, callable2 ));


我需要的是一种获取结果列表的方法

可以提供Java解决方案吗?

类似于whenAll()...

最佳答案

您所追求的是这样的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());

07-24 09:54