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; }