Guava之Stopwatch计时器-Guava

概述

  1. 简单计时方式
    一般我们检测某段代码执行的时间,都是以如下方式来进行的:
public static void main(String[] args) {
         long startTime=System.currentTimeMillis();   //获取开始时间   
        //函数主体代码
         long endTime=System.currentTimeMillis(); //获取结束时间
         System.out.println("程序运行时间: "+(endTime-startTime)+"ms");        
}
  1. stopwatch计时器
    Stopwatch用来计算经过的时间(精确到纳秒)。
    这个类比调用System.nanoTime()优势在于:
  • 性能
  • 表现形式更丰富

类声明

以下是 com.google.common.base.Stopwatch 类的声明:

public final class Stopwatch extends Object

类方法

Guava之Stopwatch计时器-Guava_第1张图片

测试类

public class StopwatchDemo {
    @Test
    public void test1() throws Exception {
        String orderNo = "12345678";

        System.out.println("订单 [{" + orderNo + "}] 开始处理");
        Stopwatch stopwatch = Stopwatch.createStarted();

        TimeUnit.SECONDS.sleep(1);  // 1秒处理时间

        System.out.println("订单 [{" + orderNo + "}] 处理完成,耗时 [{" + stopwatch.stop() + "}]");
    }

    @Test
    public void test2() 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); // 1034
        System.out.println(millis);
        // 打印
        System.out.println(stopwatch.toString()); // 1.034 s
    }


    public static void main(String[] args) throws InterruptedException {
        // 创建自动start的计时器
        Stopwatch watch = Stopwatch.createStarted();
        Thread.sleep(1000L);
        long time = watch.elapsed(TimeUnit.MILLISECONDS);
        System.out.println("代码执行时长:" + time);
        watch.reset();
        watch.start();
        Thread.sleep(500L);
        time = watch.elapsed(TimeUnit.MILLISECONDS);
        System.out.println("代码执行时长:" + time);
    }
}

其他StopWatch计时器

apache的stopwatch

引入jar包

<dependency>
    <groupId>org.apache.commonsgroupId>
    <artifactId>commons-lang3artifactId>
    <version>3.6version>
dependency>

代码示例

public static void main(String[] args) {
    //创建并启动StopWatch
    StopWatch stopwatch = StopWatch.createStarted();
    //业务逻辑......
    stopwatch.stop();
    System.out.println(stopwatch.getTime(TimeUnit.MINUTES));
}

参考

Guava之Stopwatch
java计时器StopWatch

你可能感兴趣的:(并发编程,工具包,并发编程)