From 248a1bbe6951aae5960c9afd1c506d70a114910f Mon Sep 17 00:00:00 2001 From: xuxueli <931591021@qq.com> Date: Thu, 23 May 2019 18:02:27 +0800 Subject: [PATCH] update document --- .../job/admin/core/thread/JobScheduleHelper.java | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobScheduleHelper.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobScheduleHelper.java index f5af5520..3b4edcab 100644 --- a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobScheduleHelper.java +++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobScheduleHelper.java @@ -48,7 +48,8 @@ public class JobScheduleHelper { while (!toStop) { - // 匹配任务 + // 扫描任务 + long start = System.currentTimeMillis(); Connection conn = null; PreparedStatement preparedStatement = null; try { @@ -143,10 +144,11 @@ public class JobScheduleHelper { } } } + long cost = System.currentTimeMillis()-start; - // 随机休眠1s内 + // next second, align second try { - TimeUnit.MILLISECONDS.sleep(500+new Random().nextInt(500)); + TimeUnit.MILLISECONDS.sleep(cost<1000?(1000-cost):100); } catch (InterruptedException e) { if (!toStop) { logger.error(e.getMessage(), e); @@ -167,6 +169,7 @@ public class JobScheduleHelper { @Override public void run() { + // align second try { TimeUnit.MILLISECONDS.sleep(System.currentTimeMillis()%1000 ); } catch (InterruptedException e) { @@ -178,6 +181,7 @@ public class JobScheduleHelper { int lastSecond = -1; while (!toStop) { + long start = System.currentTimeMillis(); try { // second data List ringItemData = new ArrayList<>(); @@ -199,7 +203,7 @@ public class JobScheduleHelper { } lastSecond = nowSecond; - + // ring trigger logger.debug(">>>>>>>>>>> xxl-job, time-ring beat : " + nowSecond + " = " + Arrays.asList(ringItemData) ); if (ringItemData!=null && ringItemData.size()>0) { // do trigger @@ -215,9 +219,11 @@ public class JobScheduleHelper { logger.error(">>>>>>>>>>> xxl-job, JobScheduleHelper#ringThread error:{}", e); } } + long cost = System.currentTimeMillis() - start; + // next second, align second try { - TimeUnit.SECONDS.sleep(1); + TimeUnit.MILLISECONDS.sleep(1000-cost); } catch (InterruptedException e) { if (!toStop) { logger.error(e.getMessage(), e);