ExecutorService:如何将多个callables返回的列表放入父列表中?

时间:2017-09-28 14:44:11

标签: java multithreading executorservice

我有一个可调用的,它正在执行不同的参数列表并返回另一个列表。我希望将每个线程返回的列表添加到列表中。

1 个答案:

答案 0 :(得分:0)

我会使用Java 8并行流。

List<List<Something>> listOfLists = ...
List<List<Result>> results = listOfLists.parallelStream()
                                       .map(l -> function(l))
                                       .collect(Collectors.toList());

但是您可以使用ExecutorService

ExecutorService es = 
List<Callable<List<Result>>> callables =

List<Future<List<Result>>> futures = es.invokaAll(callables);
List<List<Result>> results = new ArrayList<>();
for (Future<List<Result>> future : futures)
    results.add(future.get());