From de0e7d69af86ce7c4b313fa9fcef5e07d844dc10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=91=E5=B9=B4=E6=A2=A6=E4=B8=8E=E7=A0=96?= <2847127106@qq.com> Date: Fri, 6 Sep 2024 16:37:03 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=95=B0=E6=8D=AE=E4=B8=BA?= =?UTF-8?q?=E7=A9=BA=E6=97=B6=E6=97=A0=E6=B3=95=E6=89=A7=E8=A1=8C=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/muyu/quest/manager/TaskManager.java | 2 +- .../com/muyu/quest/service/impl/TaskServiceImpl.java | 11 +++++------ .../src/main/java/com/muyu/quest/utils/NodeUtils.java | 7 ++++++- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/muyu-quest-server/src/main/java/com/muyu/quest/manager/TaskManager.java b/muyu-quest-server/src/main/java/com/muyu/quest/manager/TaskManager.java index 1d8f31b..2629a70 100644 --- a/muyu-quest-server/src/main/java/com/muyu/quest/manager/TaskManager.java +++ b/muyu-quest-server/src/main/java/com/muyu/quest/manager/TaskManager.java @@ -137,7 +137,7 @@ public final class TaskManager { synchronized (taskQueue) { while (isRunning && taskQueue.isEmpty()) {// 队列为空 try { - taskQueue.wait(1000); + taskQueue.wait(50); } catch (InterruptedException e) { e.printStackTrace(); } diff --git a/muyu-quest-server/src/main/java/com/muyu/quest/service/impl/TaskServiceImpl.java b/muyu-quest-server/src/main/java/com/muyu/quest/service/impl/TaskServiceImpl.java index b08f52a..1ada1b5 100644 --- a/muyu-quest-server/src/main/java/com/muyu/quest/service/impl/TaskServiceImpl.java +++ b/muyu-quest-server/src/main/java/com/muyu/quest/service/impl/TaskServiceImpl.java @@ -137,7 +137,7 @@ public class TaskServiceImpl extends ServiceImpl } /** - * 执行任务 + * //TODO 执行任务 * 获取任务所有节点配置信息 拼接sql语句 * @param taskCode 任务编码 * @return 成功与否 @@ -156,10 +156,10 @@ public class TaskServiceImpl extends ServiceImpl // 划分线程 每次查询1000条 int threadNum = count / 1000 + 1; log.info("任务 {} 总共需要 {} 条数据, 划分为线程{}条",taskCode,count,threadNum); - Runnable[] tasks = new Runnable[threadNum]; for (int i = 0; i < threadNum; i++) { int index = i+1; - tasks[i] = () -> { + // 添加进入任务队列 + taskManager.execute(() -> { // 获取新SQL 并执行 String sql = findSql + " LIMIT 1000 OFFSET "+(index-1)*1000; log.info("任务 {} 开始执行第 {} 线程,查询SQL: {}",taskCode,index, sql); @@ -169,10 +169,9 @@ public class TaskServiceImpl extends ServiceImpl if (addResult.getCode() != 200){ throw new TaskException(addResult.getMsg()); } - }; + }); } - // 添加进入任务队列 - taskManager.execute(tasks); + return "执行成功"; } diff --git a/muyu-quest-server/src/main/java/com/muyu/quest/utils/NodeUtils.java b/muyu-quest-server/src/main/java/com/muyu/quest/utils/NodeUtils.java index e9eed6c..47cf1ed 100644 --- a/muyu-quest-server/src/main/java/com/muyu/quest/utils/NodeUtils.java +++ b/muyu-quest-server/src/main/java/com/muyu/quest/utils/NodeUtils.java @@ -304,9 +304,14 @@ public class NodeUtils { List> dataList1 = new ArrayList<>(); for (List datum : data) { HashMap dataMap = new HashMap<>(); - datum.forEach(dataModel -> dataMap.put(dataModel.getKey(), dataModel.getValue().toString())); + datum.forEach(dataModel -> { + // 检查 getValue 是否为空 + String value = dataModel.getValue() != null ? dataModel.getValue().toString() : null; + dataMap.put(dataModel.getKey(), value); + }); dataList1.add(dataMap); } + System.out.println(dataList1); // 拼接新增语句的值 dataList1.forEach(map -> insSql.append("( "). append(StringUtils.join(