From fe2516b646940560975e63eae8788c6e5f070728 Mon Sep 17 00:00:00 2001 From: Looly Date: Thu, 11 Jan 2024 13:31:10 +0800 Subject: [PATCH] fix cron --- .../main/java/org/dromara/hutool/cron/CronTimer.java | 10 ++++++++-- hutool-cron/src/test/resources/config/cron.setting | 2 +- hutool-db/pom.xml | 2 +- hutool-extra/pom.xml | 8 ++++---- hutool-log/pom.xml | 4 ++-- 5 files changed, 16 insertions(+), 10 deletions(-) diff --git a/hutool-cron/src/main/java/org/dromara/hutool/cron/CronTimer.java b/hutool-cron/src/main/java/org/dromara/hutool/cron/CronTimer.java index 085f01818..3ad60d746 100644 --- a/hutool-cron/src/main/java/org/dromara/hutool/cron/CronTimer.java +++ b/hutool-cron/src/main/java/org/dromara/hutool/cron/CronTimer.java @@ -13,6 +13,7 @@ package org.dromara.hutool.cron; import org.dromara.hutool.core.date.DateUnit; +import org.dromara.hutool.core.lang.Console; import org.dromara.hutool.core.thread.ThreadUtil; import org.dromara.hutool.log.Log; @@ -63,9 +64,14 @@ public class CronTimer extends Thread implements Serializable { //等待直到下一个时间点,如果被中断直接退出Timer break; } + //执行点,时间记录为执行开始的时间,而非结束时间 - thisTime = System.currentTimeMillis(); - spawnLauncher(thisTime); + spawnLauncher(nextTime); + + // issue#3460 采用叠加方式,确保正好是1分钟或1秒,避免sleep晚醒问题 + // 此处无需校验,因为每次循环都是sleep与上触发点的时间差。 + // 当上一次晚醒后,本次会减少sleep时间,保证误差在一个unit内,并不断修正。 + thisTime = nextTime; } else{ // 非正常时间重新计算(issue#1224@Github) thisTime = System.currentTimeMillis(); diff --git a/hutool-cron/src/test/resources/config/cron.setting b/hutool-cron/src/test/resources/config/cron.setting index 4e2860de9..62faca9fc 100644 --- a/hutool-cron/src/test/resources/config/cron.setting +++ b/hutool-cron/src/test/resources/config/cron.setting @@ -8,7 +8,7 @@ # demo.org.dromara.hutool.cron.TestJob.doTest = */1 * * * * * -[org.dromara.hutool.cron.demo]= +[org.dromara.hutool.cron.demo] # 6位表达式在秒匹配模式下可用,此处表示每秒执行一次 # TestJob.doTest = */1 * * * * * # 5位表达式在分匹配模式下可用,此处表示每分钟执行一次 diff --git a/hutool-db/pom.xml b/hutool-db/pom.xml index bab350310..188744420 100755 --- a/hutool-db/pom.xml +++ b/hutool-db/pom.xml @@ -38,7 +38,7 @@ 1.2.21 4.0.3 - 3.43.0.0 + 3.44.1.0 2.5.2 diff --git a/hutool-extra/pom.xml b/hutool-extra/pom.xml index 1ef2aec1b..0febf0c07 100755 --- a/hutool-extra/pom.xml +++ b/hutool-extra/pom.xml @@ -32,7 +32,7 @@ org.dromara.hutool.extra 2.3 - 3.15.8.RELEASE + 3.15.12.RELEASE 1.4.2 2.3.32 5.1.3 @@ -415,7 +415,7 @@ com.rnkrsoft.bopomofo4j bopomofo4j - 1.0.0 + 1.0.1 true @@ -496,7 +496,7 @@ org.apache.commons commons-compress - 1.24.0 + 1.25.0 compile true @@ -504,7 +504,7 @@ com.github.oshi oshi-core - 6.4.5 + 6.4.10 provided diff --git a/hutool-log/pom.xml b/hutool-log/pom.xml index db948322f..4a93b8e20 100755 --- a/hutool-log/pom.xml +++ b/hutool-log/pom.xml @@ -32,10 +32,10 @@ org.dromara.hutool.log 2.0.9 - 1.4.13 + 1.4.14 1.2.17 2.20.0 - 1.2 + 1.3.0 1.3.6 2.6.2