利用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("有返回值的異步任務(wù)"+Thread.currentThread().getName());
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return 1;
});
futures.add(future);
}
// 使用allOf方法來表示所有的并行任務(wù)
CompletableFuture<Void> allFutures = CompletableFuture.allOf(
futures.toArray(new CompletableFuture[futures.size()]));
// 下面的方法可以幫助我們獲得所有子任務(wù)的處理結(jié)果
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;
}