利用allof方法
/**
* 简单Java并行代码
* @param
*/
public List<Integer> simpleParallel(){
List<CompletableFuture<Integer>> futures = new ArrayList<>();
for (int i = 0; i <10 ; i++) {
CompletableFuture<Integer> future = CompletableFuture.supplyAsync(() -> {
System.out.println("有返回值的异步任务"+Thread.currentThread().getName());
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return 1;
});
futures.add(future);
}
// 使用allOf方法来表示所有的并行任务
CompletableFuture<Void> allFutures = CompletableFuture.allOf(
futures.toArray(new CompletableFuture[futures.size()]));
// 下面的方法可以帮助我们获得所有子任务的处理结果
CompletableFuture<List<Integer>> finalResults = allFutures.thenApply(v ->
futures.stream().map(CompletableFuture::join).collect(Collectors.toList())
);
List<Integer> resultList = finalResults.join();
System.out.println(resultList);
return resultList;
}
网友评论