全路径名:
com.google.common.base
** Stopwatch**
声明
@Beta
@GwtCompatible(emulated=true) public final class Stopwatch extends Object
简介
用来计算经过的时间(精确到纳秒)。
这个类比调用System.nanoTime()优势在于:
- 性能
- 表现形式更丰富
构造器
- Stopwatch()
创建(但不启动)一个新的stopwatch对象,用的是System.nanoTime()作为时间资源。 - Stopwatch(Tick tick)
创建(但不启动)一个新的stopwatch对象,用的是特定的时间资源。
方法
isRunning
public boolean isRunning()
如果start方法被调用。stop方法还没有调用。返回真。
start
@CanIgnoreReturnValue
public Stopwatch start()
启动stopwatch。
stop
@CanIgnoreReturnValue
public Stopwatch stop()
停止stopwatch,读取的话将会返回经历过的时间。
reset
@CanIgnoreReturnValue
public Stopwatch reset()
把stopwatch经过的时间设置为零,状态设置为停止。
elapsed
public long elapsed(TimeUnit desiredUnit)
用特定的格式返回这个stopwatch经过的时间。
toString
@Override
public String toString()
返回字符串形式的elapsed time。
例子
public class StopWatchTest {
public static void main(String[] args) throws Exception{
// 创建stopwatch并开始计时
Stopwatch stopwatch = Stopwatch.createStarted();
Thread.sleep(1980);
// 以秒打印从计时开始至现在的所用时间,向下取整
System.out.println(stopwatch.elapsed(TimeUnit.SECONDS)); // 1
// 停止计时
stopwatch.stop();
System.out.println(stopwatch.elapsed(TimeUnit.SECONDS)); // 1
// 再次计时
stopwatch.start();
Thread.sleep(100);
System.out.println(stopwatch.elapsed(TimeUnit.SECONDS)); // 2
// 重置并开始
stopwatch.reset().start();
Thread.sleep(1030);
// 检查是否运行
System.out.println(stopwatch.isRunning()); // true
long millis = stopwatch.elapsed(TimeUnit.MILLISECONDS); // 1031
System.out.println(millis);
// 打印
System.out.println(stopwatch.toString()); // 1.03 s
}
}