zl程序教程

您现在的位置是:首页 >  其它

当前栏目

Guava之Stopwatch「建议收藏」

建议 收藏 Guava stopwatch
2023-06-13 09:12:22 时间

大家好,又见面了,我是你们的朋友全栈君。

Guava之Stopwatch 计时器

Stopwatch用来计算经过的时间(精确到纳秒)。 这个类比调用System.nanoTime()优势在于:

  • 性能
  • 表现形式更丰富

一、类声明

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

public final class Stopwatch extends Object

二、类方法

方法类型

方法描述

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 + "}] 开始处理");
        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);
    }
}

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/152453.html原文链接:https://javaforall.cn