Guava之Stopwatch 计时器Stopwatch用来计算经过的时间(精确到纳秒)。
这个类比调用System.nanoTime()优势在于:
性能
表现形式更丰富
一、类声明
以下是 com.google.common.base.Stopwatch 类的声明:
public final class Stopwatch extends Object
1
二、类方法
方法类型 方法描述
static Stopwatch createStarted()
创建启动一个新的stopwatch对象,用的是System.nanoTime()作为时间资源。
static Stopwatch createStarted(Ticker ticker)
创建启动一个新的stopwatch对象,用的是特定的时间资源。
static Stopwatch createUnstarted()
创建(但不启动)一个新的stopwatch对象,用的是System.nanoTime()作为时间资源。
static Stopwatch createUnstarted(Ticker ticker)
创建(但不启动)一个新的stopwatch对象,用的是特定的时间资源。
Duration elapsed()
返回将此秒表上显示的当前经过时间作为持续时间.
long elapsed(TimeUnit desiredUnit)
用特定的格式返回这个stopwatch经过的时间.
boolean isRunning()
如果start方法被调用。stop方法还没有调用。返回真.
Stopwatch reset()
把stopwatch经过的时间设置为零,状态设置为停止.
Stopwatch start()
启动 stopwatch.
Stopwatch stop()
停止stopwatch,读取的话将会返回经历过的时间.
String toString()
返回字符串形式的elapsed time.
三、测试类
public class StopwatchDemo {
@Test
public void test1() throws Exception {
String orderNo = “12345678”;
System.out.println("订单 [{" + orderNo + "}] 开始处理");<br /> Stopwatch stopwatch = Stopwatch.createStarted();
TimeUnit.SECONDS.sleep(1); // 1秒处理时间
System.out.println("订单 [{" + orderNo + "}] 处理完成,耗时 [{" + stopwatch.stop() + "}]");<br /> }
@Test<br /> public void test2() throws Exception {<br /> // 创建stopwatch并开始计时<br /> Stopwatch stopwatch = Stopwatch.createStarted();<br /> Thread.sleep(1980);<br /> // 以秒打印从计时开始至现在的所用时间,向下取整<br /> System.out.println(stopwatch.elapsed(TimeUnit.SECONDS)); // 1<br /> // 停止计时<br /> stopwatch.stop();<br /> System.out.println(stopwatch.elapsed(TimeUnit.SECONDS)); // 1
// 再次计时<br /> stopwatch.start();<br /> Thread.sleep(100);<br /> System.out.println(stopwatch.elapsed(TimeUnit.SECONDS)); // 2<br /> // 重置并开始<br /> stopwatch.reset().start();<br /> Thread.sleep(1030);
// 检查是否运行<br /> System.out.println(stopwatch.isRunning()); // true<br /> long millis = stopwatch.elapsed(TimeUnit.MILLISECONDS); // 1034<br /> System.out.println(millis);<br /> // 打印<br /> System.out.println(stopwatch.toString()); // 1.034 s<br /> }
public static void main(String[] args) throws InterruptedException {<br /> // 创建自动start的计时器<br /> Stopwatch watch = Stopwatch.createStarted();<br /> Thread.sleep(1000L);<br /> long time = watch.elapsed(TimeUnit.MILLISECONDS);<br /> System.out.println("代码执行时长:" + time);<br /> watch.reset();<br /> watch.start();<br /> Thread.sleep(500L);<br /> time = watch.elapsed(TimeUnit.MILLISECONDS);<br /> System.out.println("代码执行时长:" + time);<br /> }<br />}