mirror of
https://github.com/tiennm99/zfoo.git
synced 2026-05-31 00:22:47 +00:00
perf[time]: improve the precision of the now() method
This commit is contained in:
@@ -55,7 +55,6 @@ public abstract class SchedulerBus {
|
||||
private static long lastTriggerTimestamp = 0L;
|
||||
|
||||
|
||||
public static final long TRIGGER_MILLIS_INTERVAL = TimeUtils.MILLIS_PER_SECOND;
|
||||
/**
|
||||
* 在scheduler中,最小的triggerTimestamp
|
||||
*/
|
||||
@@ -68,7 +67,9 @@ public abstract class SchedulerBus {
|
||||
} catch (Exception e) {
|
||||
logger.error("scheduler triggers an error.", e);
|
||||
}
|
||||
}, 0, TRIGGER_MILLIS_INTERVAL, TimeUnit.MILLISECONDS);
|
||||
}, 0, TimeUtils.MILLIS_PER_SECOND, TimeUnit.MILLISECONDS);
|
||||
|
||||
executor.scheduleAtFixedRate(TimeUtils::currentTimeMillis, 0, 20, TimeUnit.MILLISECONDS);
|
||||
}
|
||||
|
||||
public static class SchedulerThreadFactory implements ThreadFactory {
|
||||
|
||||
@@ -31,8 +31,6 @@ import java.util.TimeZone;
|
||||
*/
|
||||
public abstract class TimeUtils {
|
||||
|
||||
private static long timestamp = System.currentTimeMillis();
|
||||
|
||||
// 一秒钟对应的纳秒数
|
||||
public static final long NANO_PER_SECOND = 1_000_000_000;
|
||||
// 一秒钟对应的毫秒数
|
||||
@@ -85,6 +83,8 @@ public abstract class TimeUtils {
|
||||
SchedulerBus.refreshMinTriggerTimestamp();
|
||||
}
|
||||
|
||||
private static volatile long timestamp = System.currentTimeMillis();
|
||||
|
||||
/**
|
||||
* 获取精确的时间戳
|
||||
*/
|
||||
@@ -94,7 +94,7 @@ public abstract class TimeUtils {
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取最多只有一秒延迟的粗略时间戳,适用于对时间精度要求不高的场景,最多只有一秒误差
|
||||
* 获取最多只有20ms延迟的粗略时间戳,适用于对时间精度要求不高的场景,最多只有20ms误差
|
||||
* <p>
|
||||
* 比System.currentTimeMillis()的性能高10倍
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user