Class MonotonicClock
- All Implemented Interfaces:
InstantSource
This class provides precise time measurements using System.nanoTime()
while maintaining wall-clock time information in UTC. The wall-clock time
is computed from the monotonic duration since system start to ensure consistency
between time measurements.
This implementation is singleton-based and always uses UTC timezone. The clock
cannot be adjusted to different timezones to maintain consistent monotonic behavior.
Users needing local time representation should convert the result of instant()
to their desired timezone:
Instant now = MonotonicClock.now();
ZonedDateTime local = now.atZone(ZoneId.systemDefault());
- See Also:
-
Method Summary
Modifier and TypeMethodDescriptionstatic MonotonicClock
get()
Returns the singleton instance of MonotonicClock.getZone()
Returns the zone ID of this clock, which is always UTC.instant()
Returns a monotonically increasing instant.static Instant
now()
Returns the current instant from the monotonic clock.Returns this clock since timezone adjustments are not supported.Methods inherited from class java.time.Clock
equals, fixed, hashCode, millis, offset, system, systemDefaultZone, systemUTC, tick, tickMillis, tickMinutes, tickSeconds
-
Method Details
-
get
Returns the singleton instance of MonotonicClock.- Returns:
- the monotonic clock instance
-
now
Returns the current instant from the monotonic clock. This is a convenience method equivalent toget().instant()
.- Returns:
- the current instant using monotonic timing
-
instant
Returns a monotonically increasing instant.The returned instant is calculated by adding the elapsed nanoseconds since clock creation to the initial wall clock time. This ensures that the time never goes backwards and maintains a consistent relationship with the wall clock time.
- Specified by:
instant
in interfaceInstantSource
- Specified by:
instant
in classClock
- Returns:
- the current instant using monotonic timing
-
getZone
Returns the zone ID of this clock, which is always UTC. -
withZone
Returns this clock since timezone adjustments are not supported.This implementation maintains UTC time to ensure monotonic behavior. The provided zone parameter is ignored.
- Specified by:
withZone
in interfaceInstantSource
- Specified by:
withZone
in classClock
- Parameters:
zone
- the target timezone (ignored)- Returns:
- this clock instance
-