diff --git a/qing-yu-club-subject/qing-yu-club-domain/src/main/java/com/landaiqing/subject/domain/service/impl/SubjectCategoryDomainServiceImpl.java b/qing-yu-club-subject/qing-yu-club-domain/src/main/java/com/landaiqing/subject/domain/service/impl/SubjectCategoryDomainServiceImpl.java index e5ef13b..29ce0c8 100644 --- a/qing-yu-club-subject/qing-yu-club-domain/src/main/java/com/landaiqing/subject/domain/service/impl/SubjectCategoryDomainServiceImpl.java +++ b/qing-yu-club-subject/qing-yu-club-domain/src/main/java/com/landaiqing/subject/domain/service/impl/SubjectCategoryDomainServiceImpl.java @@ -24,6 +24,8 @@ import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutionException; import java.util.concurrent.FutureTask; import java.util.concurrent.ThreadPoolExecutor; import java.util.stream.Collectors; @@ -135,23 +137,35 @@ public class SubjectCategoryDomainServiceImpl implements SubjectCategoryDomainSe , JSON.toJSONString(subjectCategoryList)); } List categoryBOList = SubjectCategoryConverter.INSTANCE.convertBoToCategory(subjectCategoryList); - // 一次获取标签信息 - List>>> futureTaskList = new LinkedList<>(); Map> map = new HashMap<>(); - //线程池并发调用 - categoryBOList.forEach(category -> { - FutureTask>> futureTask = new FutureTask<>(() -> - getLabelBOList(category)); - futureTaskList.add(futureTask); - labelThreadPool.submit(futureTask); - }); - for (FutureTask>> futureTask : futureTaskList) { - Map> resultMap = futureTask.get(); - if (CollectionUtils.isEmpty(resultMap)) { - continue; + List>>> completableFutureList = categoryBOList.stream().map(category -> + CompletableFuture.supplyAsync(() -> getLabelBOList(category), labelThreadPool) + ).collect(Collectors.toList()); + completableFutureList.forEach(future -> { + try { + Map> resultMap = future.get(); + map.putAll(resultMap); + } catch (Exception e) { + e.printStackTrace(); } - map.putAll(resultMap); - } + }); +// // 一次获取标签信息 +// List>>> futureTaskList = new LinkedList<>(); +// Map> map = new HashMap<>(); +// //线程池并发调用 +// categoryBOList.forEach(category -> { +// FutureTask>> futureTask = new FutureTask<>(() -> +// getLabelBOList(category)); +// futureTaskList.add(futureTask); +// labelThreadPool.submit(futureTask); +// }); +// for (FutureTask>> futureTask : futureTaskList) { +// Map> resultMap = futureTask.get(); +// if (CollectionUtils.isEmpty(resultMap)) { +// continue; +// } +// map.putAll(resultMap); +// } categoryBOList.forEach(categoryBO -> { categoryBO.setLabelBOList(map.get(categoryBO.getId())); }); @@ -159,6 +173,9 @@ public class SubjectCategoryDomainServiceImpl implements SubjectCategoryDomainSe } private Map> getLabelBOList(SubjectCategoryBO category) { + if (log.isInfoEnabled()) { + log.info("getLabelBOList:{}", JSON.toJSONString(category)); + } Map> labelMap = new HashMap<>(); SubjectMapping subjectMapping = new SubjectMapping(); subjectMapping.setCategoryId(category.getId()); @@ -167,9 +184,9 @@ public class SubjectCategoryDomainServiceImpl implements SubjectCategoryDomainSe return null; } List labelIdList = mappingList.stream().map(SubjectMapping::getLabelId).collect(Collectors.toList()); - List subjectLabelList = subjectLabelService.batchQueryById(labelIdList); + List labelList = subjectLabelService.batchQueryById(labelIdList); List labelBOList = new LinkedList<>(); - subjectLabelList.forEach(label -> { + labelList.forEach(label -> { SubjectLabelBO subjectLabelBO = new SubjectLabelBO(); subjectLabelBO.setId(label.getId()); subjectLabelBO.setLabelName(label.getLabelName());