public class SafeClock
extends com.oracle.common.util.SafeClock
Unlike the System.currentTimeMillis()
this clock guarantees that the time never "goes back". More specifically, when queried twice on the same thread, the second query will never return a value that is less then the value returned by the first.
If we detect the system clock moving backward, an attempt will be made to gradually compensate the safe clock (by slowing it down), so in the long run the safe time is the same as the system time.
The SafeClock supports the concept of "clock jitter", which is a small time interval that the system clock could fluctuate by without a corresponding passage of wall time.
Modifier and Type | Field and Description |
---|---|
static long |
DEFAULT_JITTER_THRESHOLD
The default jitter threshold.
|
Constructor and Description |
---|
SafeClock(long ldtUnsafe)
Create a new SafeClock with the default maximum expected jitter as specified by the "coherence.safeclock.jitter" system property.
|
SafeClock(long ldtUnsafe, long lJitter)
Create a new SafeClock with the specified jitter threshold.
|
getLastSafeTimeMillis, getSafeTimeMillis, getSafeTimeMillis, updateSafeTimeMillis
compareAndSet, get, getAndSet, lazySet, set, toString, weakCompareAndSet
public static final long DEFAULT_JITTER_THRESHOLD
public SafeClock(long ldtUnsafe)
ldtUnsafe
- the current unsafe timepublic SafeClock(long ldtUnsafe, long lJitter)
ldtUnsafe
- the current unsafe timelJitter
- the maximum expected jitter in the underlying system clock