Package io.opentelemetry.sdk.common
Class SystemClock
- java.lang.Object
-
- io.opentelemetry.sdk.common.SystemClock
-
-
Field Summary
Fields Modifier and Type Field Description private static SystemClock
INSTANCE
-
Constructor Summary
Constructors Modifier Constructor Description private
SystemClock()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description (package private) static Clock
getInstance()
Returns aSystemClock
.long
nanoTime()
Returns a time measurement with nanosecond precision that can only be used to calculate elapsed time.long
now()
Returns the current epoch timestamp in nanos from this clock.long
now(boolean highPrecision)
Returns the current epoch timestamp in nanos from this clock.java.lang.String
toString()
-
-
-
Field Detail
-
INSTANCE
private static final SystemClock INSTANCE
-
-
Method Detail
-
getInstance
static Clock getInstance()
Returns aSystemClock
.
-
now
public long now()
Description copied from interface:Clock
Returns the current epoch timestamp in nanos from this clock. This timestamp should only be used to compute a current time. To compute a duration, timestamps should always be obtained usingClock.nanoTime()
. For example, this usage is correct.long startNanos = clock.nanoTime(); // Spend time... long durationNanos = clock.nanoTime() - startNanos;
This usage is NOT correct.
long startNanos = clock.now(); // Spend time... long durationNanos = clock.now() - startNanos;
Calling this is equivalent to calling
Clock.now(boolean)
withhighPrecision=true
.
-
now
public long now(boolean highPrecision)
Description copied from interface:Clock
Returns the current epoch timestamp in nanos from this clock.This overload of
Clock.now()
includes ahighPrecision
argument which specifies whether the implementation should attempt to resolve higher precision at the potential expense of performance. For example, in java 9+ its sometimes possible to resolve ns precision higher than the ms precision ofSystem.currentTimeMillis()
, but doing so incurs a performance penalty which some callers may wish to avoid. In contrast, we don't currently know if resolving ns precision is possible in java 8, regardless of the value ofhighPrecision
.See
Clock.now()
javadoc for details on usage.
-
nanoTime
public long nanoTime()
Description copied from interface:Clock
Returns a time measurement with nanosecond precision that can only be used to calculate elapsed time.
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
-