java多线程使用CompletableFuture来并发地执行一系列任务
List<CompletableFuture<List<DigTask>>> futures = new ArrayList<CompletableFuture<List<DigTask>>>();
List<String> citys = dictionaryService.listObjs(new QueryWrapper<Dictionary>()
.eq("delete_state", false)
.eq("type", 3).select("name"), p -> p.toString());
for (String _city : citys) {
futures.add(CompletableFuture.supplyAsync(() -> {
return mapper.digTask();
}, ThreadPoolUtils.getThreadPool()));
}
List<DigTask> rs = new ArrayList<DigTask>();
CompletableFuture.allOf(futures.toArray(CompletableFuture[]::new)).whenComplete((v, t) -> {
futures.forEach(p -> {
rs.addAll(p.getNow(null));
});
}).join();
mapper.digTask(); 返回List<DigTask>
解读:
