From f45e3ea2f43ebc546d7bf058d808b463eb9196a1 Mon Sep 17 00:00:00 2001 From: wangliwen Date: Fri, 12 Aug 2022 14:11:34 +0800 Subject: [PATCH] =?UTF-8?q?parallelStream=20=E4=BD=BF=E7=94=A8=E8=87=AA?= =?UTF-8?q?=E5=AE=9A=E4=B9=89=20ForkJoinPool=E9=98=B2=E6=AD=A2=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E5=A0=86=E7=A7=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ResourceServiceImpl.java | 111 ++++++++---------- 1 file changed, 50 insertions(+), 61 deletions(-) diff --git a/renren-admin/src/main/java/io/renren/modules/resource/service/impl/ResourceServiceImpl.java b/renren-admin/src/main/java/io/renren/modules/resource/service/impl/ResourceServiceImpl.java index 7dcb5fa8..14134861 100644 --- a/renren-admin/src/main/java/io/renren/modules/resource/service/impl/ResourceServiceImpl.java +++ b/renren-admin/src/main/java/io/renren/modules/resource/service/impl/ResourceServiceImpl.java @@ -474,14 +474,6 @@ public class ResourceServiceImpl extends CrudServiceImpl { -// Map index = (Map) x; -// String string = (index.get("total") == null) ? "0" : index.get("total").toString(); -// return Long.valueOf(string); -// } -// ).reversed()).skip((long) (pageNum - 1) * pageSize).limit(pageSize).map(x -> -// Long.valueOf(x.get("id").toString()) -// ).limit(pageSize).collect(Collectors.toList()); break; case "ASC": // total 升序 ids = customThreadPool.submit(() -> { @@ -494,13 +486,6 @@ public class ResourceServiceImpl extends CrudServiceImpl { -// String string = (x.get("total") == null) ? "0" : x.get("total").toString(); -// return Long.valueOf(string); -// } -// )).skip((pageNum - 1) * pageSize).limit(pageSize).map(x -> -// Long.valueOf(x.get("id").toString()) -// ).limit(pageSize).collect(Collectors.toList()); break; } resourceDTOS = resourceDao.selectDTOPage(resourceDTO, null, null, null, null, ids); @@ -1131,6 +1116,7 @@ public class ResourceServiceImpl extends CrudServiceImpl knowledgeUUID = jdbcTemplate.queryForList("SELECT note1 FROM tb_data_resource WHERE type ='知识库' AND note1 IS NOT NULL FOR UPDATE;", String.class).stream().distinct().collect(Collectors.toList()); final int pageSize = CPU_NUM * 10; + ForkJoinPool customThreadPool = new ForkJoinPool(CPU_NUM * 3); Arrays.stream(catalogIds).map(index -> { logger.info("处理:{}", index); CopyOnWriteArrayList task = new CopyOnWriteArrayList<>(); @@ -1208,54 +1194,57 @@ public class ResourceServiceImpl extends CrudServiceImpl { - Map map = (Map) resource; - return !knowledgeUUID.contains(map.get("uuid").toString()); - }).forEach(resource -> { - Map map = (Map) resource; - ResourceDTO dto = new ResourceDTO(); - dto.setName(map.get("title").toString()); - dto.setType("知识库"); - dto.setVisits(0L); - //所属部门暂时设为青岛市政府办公厅 - dto.setDeptId(1517116100113850370L); - dto.setNote1(map.get("uuid").toString()); - dto.setDelFlag(0); - ArrayList infoList = new ArrayList<>(); - map.forEach((key, value) -> { - switch (key) { - case "title": - dto.setName(value.toString()); - break; - case "url": - dto.setLink(value.toString()); - break; - case "createtime": - Date createDate = new Date(Long.parseLong(value.toString())); - dto.setCreateDate(createDate); - break; - default: - AttrEntity attrEntity = new AttrEntity(); - attrEntity.setDelFlag(0); - attrEntity.setAttrType(key); - attrEntity.setAttrValue(value.toString()); - infoList.add(attrEntity); - break; + customThreadPool.submit(() -> { + list.parallelStream().filter(resource -> { + Map map = (Map) resource; + return !knowledgeUUID.contains(map.get("uuid").toString()); + }).forEach(resource -> { + Map map = (Map) resource; + ResourceDTO dto = new ResourceDTO(); + dto.setName(map.get("title").toString()); + dto.setType("知识库"); + dto.setVisits(0L); + //所属部门暂时设为青岛市政府办公厅 + dto.setDeptId(1517116100113850370L); + dto.setNote1(map.get("uuid").toString()); + dto.setDelFlag(0); + ArrayList infoList = new ArrayList<>(); + map.forEach((key, value) -> { + switch (key) { + case "title": + dto.setName(value.toString()); + break; + case "url": + dto.setLink(value.toString()); + break; + case "createtime": + Date createDate = new Date(Long.parseLong(value.toString())); + dto.setCreateDate(createDate); + break; + default: + AttrEntity attrEntity = new AttrEntity(); + attrEntity.setDelFlag(0); + attrEntity.setAttrType(key); + attrEntity.setAttrValue(value.toString()); + infoList.add(attrEntity); + break; + } + }); + AttrEntity attrEntity = new AttrEntity(); + attrEntity.setDelFlag(0); + attrEntity.setAttrType("文件类型"); + if ("f49561afc7204f008c4bb3cd821eb6ba".equals(index)) { + attrEntity.setAttrValue("政府公报"); + } else { + attrEntity.setAttrValue("政策解读"); } + infoList.add(attrEntity); + dto.setInfoList(infoList); + this.insertWithAttrs(dto); + logger.info("插入:{}", dto.getName()); }); - AttrEntity attrEntity = new AttrEntity(); - attrEntity.setDelFlag(0); - attrEntity.setAttrType("文件类型"); - if ("f49561afc7204f008c4bb3cd821eb6ba".equals(index)) { - attrEntity.setAttrValue("政府公报"); - } else { - attrEntity.setAttrValue("政策解读"); - } - infoList.add(attrEntity); - dto.setInfoList(infoList); - this.insertWithAttrs(dto); - logger.info("插入:{}", dto.getName()); - }); + }).join(); + customThreadPool.shutdown(); }, executor)); try { Thread.sleep(300L);