@GwtCompatible(emulated=true) public final class Stopwatch extends 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
 Duration duration = stopwatch.elapsed();
 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.
Warning for Android users: a stopwatch with default behavior may not continue to keep time while the device is asleep. Instead, create one like this:
 Stopwatch.createStarted(
      new Ticker() {
        public long read() {
          return android.os.SystemClock.elapsedRealtimeNanos();
        }
      });
 | Modifier and Type | Method and Description | 
|---|---|
static Stopwatch | 
createStarted()
Creates (and starts) a new stopwatch using  
System.nanoTime() as its time source. | 
static Stopwatch | 
createStarted(Ticker ticker)
Creates (and starts) a new stopwatch, using the specified time source. 
 | 
static Stopwatch | 
createUnstarted()
Creates (but does not start) a new stopwatch using  
System.nanoTime() as its time source. | 
static Stopwatch | 
createUnstarted(Ticker ticker)
Creates (but does not start) a new stopwatch, using the specified time source. 
 | 
Duration | 
elapsed()
Returns the current elapsed time shown on this stopwatch as a  
Duration. | 
long | 
elapsed(TimeUnit desiredUnit)
Returns the current elapsed time shown on this stopwatch, expressed in the desired time unit,
 with any fraction rounded down. 
 | 
boolean | 
isRunning()
 | 
Stopwatch | 
reset()
Sets the elapsed time for this stopwatch to zero, and places it in a stopped state. 
 | 
Stopwatch | 
start()
Starts the stopwatch. 
 | 
Stopwatch | 
stop()
Stops the stopwatch. 
 | 
String | 
toString()
Returns a string representation of the current elapsed time. 
 | 
public static Stopwatch createUnstarted()
System.nanoTime() as its time source.public static Stopwatch createUnstarted(Ticker ticker)
public static Stopwatch createStarted()
System.nanoTime() as its time source.public static Stopwatch createStarted(Ticker ticker)
public boolean isRunning()
@CanIgnoreReturnValue public Stopwatch start()
Stopwatch instanceIllegalStateException - if the stopwatch is already running.@CanIgnoreReturnValue public Stopwatch stop()
Stopwatch instanceIllegalStateException - if the stopwatch is already stopped.@CanIgnoreReturnValue public Stopwatch reset()
Stopwatch instancepublic long elapsed(TimeUnit desiredUnit)
Note: the overhead of measurement can be more than a microsecond, so it is generally
 not useful to specify TimeUnit.NANOSECONDS precision here.
 
It is generally not a good idea to use an ambiguous, unitless long to represent
 elapsed time. Therefore, we recommend using elapsed() instead, which returns a
 strongly-typed Duration instance.
elapsedTime())@GwtIncompatible public Duration elapsed()
Duration. Unlike elapsed(TimeUnit), this method does not lose any precision due to rounding.Copyright © 2010–2019. All rights reserved.