public final class Stopwatch
extends java.lang.Object
System.nanoTime() for a few reasons:
nanoTime, the value returned has no absolute
meaning, and can only be interpreted as relative to another timestamp
returned by nanoTime at a different time. Stopwatch is a
more effective abstraction because it exposes only these relative values,
not the absolute ones.
Basic usage:
Stopwatch stopwatch = Stopwatch.createStarted(); doSomething(); stopwatch.stop(); // optional long millis = stopwatch.elapsed(MILLISECONDS); log.info("time: " + stopwatch); // formatted string like "12.3 ms"
Stopwatch methods are not idempotent; it is an error to start or stop a stopwatch that is already in the desired state.
When testing code that uses this class, use
#createUnstarted(Ticker) or #createStarted(Ticker) to
supply a fake or mock ticker.
This allows you to
simulate any valid behavior of the stopwatch.
Note: This class is not thread-safe.
| Modifier and Type | Method and Description |
|---|---|
static Stopwatch |
createStarted()
Creates (and starts) a new stopwatch using
System.nanoTime()
as its time source. |
static Stopwatch |
createUnstarted()
Creates (but does not start) a new stopwatch using
System.nanoTime()
as its time source. |
Stopwatch |
start()
Starts the stopwatch.
|
Stopwatch |
stop()
Stops the stopwatch.
|
java.lang.String |
toString()
Returns a string representation of the current elapsed time.
|
@Nonnull public static Stopwatch createUnstarted()
System.nanoTime()
as its time source.@Nonnull public static Stopwatch createStarted()
System.nanoTime()
as its time source.@Nonnull public Stopwatch start()
Stopwatch instancejava.lang.IllegalStateException - if the stopwatch is already running.@Nonnull public Stopwatch stop()
Stopwatch instancejava.lang.IllegalStateException - if the stopwatch is already stopped.public java.lang.String toString()
toString in class java.lang.Object