Package org.apache.jackrabbit.oak.stats
Class Clock
java.lang.Object
java.time.Clock
org.apache.jackrabbit.oak.stats.Clock
- All Implemented Interfaces:
InstantSource
- Direct Known Subclasses:
Clock.Fast,Clock.Virtual
Mechanism for keeping track of time at millisecond accuracy.
As of Oak 1.20, this extends from Clock.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classFast clock implementation whoseClock.Fast.getTime()method returns instantaneously thanks to a background task that takes care of the actual time-keeping work.static classA virtual clock that has no connection to the actual system time. -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic ClockAccurate clock implementation that uses interval timings from theSystem.nanoTime()method to calculate an as accurate as possible time based on occasional calls toSystem.currentTimeMillis()to prevent clock drift.static ClockSimple clock implementation based onSystem.currentTimeMillis(), which is known to be rather slow on some platforms. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptiongetDate()Convenience method that returns thegetTimeIncreasing()value as aDateinstance.Convenience method that returns thegetTimeMonotonic()value as aDateinstance.abstract longgetTime()Returns the current time in milliseconds since the epoch.longReturns a strictly increasing timestamp based on the current time.longReturns a monotonically increasing timestamp based on the current time.getZone()instant()voidwaitUntil(long timestamp) Waits until the given point in time is reached.Methods inherited from class java.time.Clock
equals, fixed, hashCode, millis, offset, system, systemDefaultZone, systemUTC, tick, tickMillis, tickMinutes, tickSeconds
-
Field Details
-
SIMPLE
Simple clock implementation based onSystem.currentTimeMillis(), which is known to be rather slow on some platforms. -
ACCURATE
Accurate clock implementation that uses interval timings from theSystem.nanoTime()method to calculate an as accurate as possible time based on occasional calls toSystem.currentTimeMillis()to prevent clock drift.
-
-
Constructor Details
-
Clock
public Clock()
-
-
Method Details
-
getTime
public abstract long getTime()Returns the current time in milliseconds since the epoch.- Returns:
- current time in milliseconds since the epoch
- See Also:
-
getTimeMonotonic
public long getTimeMonotonic()Returns a monotonically increasing timestamp based on the current time. A call to this method will always return a value that is greater than or equal to a value returned by any previous call. This contract holds even across multiple threads and in cases when the system time is adjusted backwards. In the latter case the returned value will remain constant until the previously reported timestamp is again reached.- Returns:
- monotonically increasing timestamp
-
getTimeIncreasing
Returns a strictly increasing timestamp based on the current time. This method is likegetTimeMonotonic(), with the exception that two calls of this method will never return the same timestamp. Instead this method will explicitly wait until the current time increases beyond any previously returned value. Note that the wait may last long if this method is called frequently from many concurrent thread or if the system time is adjusted backwards. The caller should be prepared to deal with an explicit interrupt in such cases.- Returns:
- strictly increasing timestamp
- Throws:
InterruptedException- if the wait was interrupted
-
getDate
- Returns:
- current time
-
getDateMonotonic
Convenience method that returns thegetTimeMonotonic()value as aDateinstance.- Returns:
- monotonically increasing time
-
getDateIncreasing
Convenience method that returns thegetTimeIncreasing()value as aDateinstance.- Returns:
- strictly increasing time
- Throws:
InterruptedException
-
waitUntil
Waits until the given point in time is reached. The current thread is suspended until thegetTimeIncreasing()method returns a time that's equal or greater than the given point in time.- Parameters:
timestamp- time in milliseconds since epoch- Throws:
InterruptedException- if the wait was interrupted
-
getZone
-
instant
- Specified by:
instantin interfaceInstantSource- Specified by:
instantin classClock
-
withZone
- Specified by:
withZonein interfaceInstantSource- Specified by:
withZonein classClock
-