Class Stopwatch
- java.lang.Object
-
- org.glassfish.jersey.internal.guava.Stopwatch
-
public final class Stopwatch extends Object
An object that measures elapsed time in nanoseconds. It is useful to measure elapsed time using this class instead of direct calls toSystem.nanoTime()for a few reasons:- An alternate time source can be substituted, for testing or performance reasons.
- As documented by
nanoTime, the value returned has no absolute meaning, and can only be interpreted as relative to another timestamp returned bynanoTimeat a different time.Stopwatchis 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.
- Since:
- 10.0
- Author:
- Kevin Bourrillion
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static StopwatchcreateUnstarted()Creates (but does not start) a new stopwatch usingSystem.nanoTime()as its time source.Stopwatchstart()Starts the stopwatch.StringtoString()Returns a string representation of the current elapsed time.
-
-
-
Method Detail
-
createUnstarted
public static Stopwatch createUnstarted()
Creates (but does not start) a new stopwatch usingSystem.nanoTime()as its time source.- Since:
- 15.0
-
start
public Stopwatch start()
Starts the stopwatch.- Returns:
- this
Stopwatchinstance - Throws:
IllegalStateException- if the stopwatch is already running.
-
-