From 8785b3f516895906fe148ada6f62bf85a9cbecf1 Mon Sep 17 00:00:00 2001 From: xuxueli <931591021@qq.com> Date: Sat, 25 Oct 2025 02:14:51 +0800 Subject: [PATCH] =?UTF-8?q?refactor(scheduler):=E4=BC=98=E5=8C=96=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E8=B0=83=E5=BA=A6=E6=97=B6=E9=97=B4=E7=8E=AF=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加 refreshNextValidTime 方法注释 - 使用 computeIfAbsent 简化时间环数据初始化- 更新日志输出格式为 List.of -优化时间环数据空值判断逻辑 --- .../scheduler/thread/JobScheduleHelper.java | 29 +++++++++++++------ 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/scheduler/thread/JobScheduleHelper.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/scheduler/thread/JobScheduleHelper.java index bdf1a621..841ee162 100644 --- a/xxl-job-admin/src/main/java/com/xxl/job/admin/scheduler/thread/JobScheduleHelper.java +++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/scheduler/thread/JobScheduleHelper.java @@ -228,6 +228,12 @@ public class JobScheduleHelper { ringThread.start(); } + /** + * refresh next valid time of job + * + * @param jobInfo job info + * @param fromTime from time + */ private void refreshNextValidTime(XxlJobInfo jobInfo, Date fromTime) { try { Date nextValidTime = generateNextValidTime(jobInfo, fromTime); @@ -254,16 +260,21 @@ public class JobScheduleHelper { } } + /** + * push time ring + * + * @param ringSecond ring second + * @param jobId job id + */ private void pushTimeRing(int ringSecond, int jobId){ - // push async ring - List ringItemData = ringData.get(ringSecond); - if (ringItemData == null) { - ringItemData = new ArrayList(); - ringData.put(ringSecond, ringItemData); - } - ringItemData.add(jobId); + // get ringItemData, init when not exists + List ringItemData = ringData.computeIfAbsent( + ringSecond, + k -> new ArrayList<>()); - logger.debug(">>>>>>>>>>> xxl-job, schedule push time-ring : " + ringSecond + " = " + Arrays.asList(ringItemData) ); + // push async rind + ringItemData.add(jobId); + logger.debug(">>>>>>>>>>> xxl-job, schedule push time-ring : " + ringSecond + " = " + List.of(ringItemData)); } /** @@ -293,7 +304,7 @@ public class JobScheduleHelper { if (!ringData.isEmpty()) { for (int second : ringData.keySet()) { List tmpData = ringData.get(second); - if (tmpData!=null && tmpData.size()>0) { + if (tmpData!=null && !tmpData.isEmpty()) { hasRingData = true; break; }