使用自定义线程池searchExecutorService
CompletableFuture接收返回结果
并发获取任务结果
List<CompletableFuture<SearchResultBO>> completableFutureList = searchList.parallelStream()
.map(seachParam-> CompletableFuture.supplyAsync(() -> getSearchResult(searchParam), searchExecutorService))
.collect(Collectors.toList());
CompletableFuture<SearchResultBO> searchResultCompletableFuture = CompletableFuture.allOf(completableFutureList.toArray(new CompletableFuture[0]));
try {
searchResultCompletableFuture.get();
} catch (Exception e) {
log.warn("查询失败:{}", e.getMessage());
}
result = completableFutureList.stream()
.map(CompletableFuture::join)
.filter(Objects::nonNull)
.collect(Collectors.toList());
SearchResultBO getSearchResult(List<SearchParam> searchParam){
//TODO
//do some your business
}