mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-07-21 15:09:48 +08:00
fix cron bug
This commit is contained in:
@@ -226,11 +226,23 @@ public class ThreadUtil {
|
||||
if (millis == null) {
|
||||
return true;
|
||||
}
|
||||
return sleep(millis.longValue());
|
||||
}
|
||||
|
||||
try {
|
||||
Thread.sleep(millis.longValue());
|
||||
} catch (InterruptedException e) {
|
||||
return false;
|
||||
/**
|
||||
* 挂起当前线程
|
||||
*
|
||||
* @param millis 挂起的毫秒数
|
||||
* @return 被中断返回false,否则true
|
||||
* @since 5.3.2
|
||||
*/
|
||||
public static boolean sleep(long millis) {
|
||||
if (millis > 0) {
|
||||
try {
|
||||
Thread.sleep(millis);
|
||||
} catch (InterruptedException e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@@ -243,15 +255,36 @@ public class ThreadUtil {
|
||||
* @see ThreadUtil#sleep(Number)
|
||||
*/
|
||||
public static boolean safeSleep(Number millis) {
|
||||
long millisLong = millis.longValue();
|
||||
if (millis == null) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return safeSleep(millis.longValue());
|
||||
}
|
||||
|
||||
/**
|
||||
* 考虑{@link Thread#sleep(long)}方法有可能时间不足给定毫秒数,此方法保证sleep时间不小于给定的毫秒数
|
||||
*
|
||||
* @param millis 给定的sleep时间
|
||||
* @return 被中断返回false,否则true
|
||||
* @see ThreadUtil#sleep(Number)
|
||||
* @since 5.3.2
|
||||
*/
|
||||
public static boolean safeSleep(long millis) {
|
||||
long done = 0;
|
||||
while (done < millisLong) {
|
||||
long before = System.currentTimeMillis();
|
||||
if (false == sleep(millisLong - done)) {
|
||||
long before;
|
||||
long spendTime;
|
||||
while (done >= 0 && done < millis) {
|
||||
before = System.currentTimeMillis();
|
||||
if (false == sleep(millis - done)) {
|
||||
return false;
|
||||
}
|
||||
long after = System.currentTimeMillis();
|
||||
done += (after - before);
|
||||
spendTime = System.currentTimeMillis() - before;
|
||||
if (spendTime <= 0) {
|
||||
// Sleep花费时间为0或者负数,说明系统时间被拨动
|
||||
break;
|
||||
}
|
||||
done += spendTime;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@@ -318,6 +351,13 @@ public class ThreadUtil {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 等待当前线程结束. 调用 {@link Thread#join()} 并忽略 {@link InterruptedException}
|
||||
*/
|
||||
public static void waitForDie() {
|
||||
waitForDie(Thread.currentThread());
|
||||
}
|
||||
|
||||
/**
|
||||
* 等待线程结束. 调用 {@link Thread#join()} 并忽略 {@link InterruptedException}
|
||||
*
|
||||
|
Reference in New Issue
Block a user