Google Guava 快速入门 —— 【基础】计时器 StopWatch 类

Google Guava 快速入门.jpg

Guava StopWatch 计时器

StopWatch 用来计算经过的时间(精确到纳秒)。

这个类比调用 System.nanoTime() 优势在于:

  • 性能

  • 表现形式更丰富

一、类声明

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

@GwtCompatible(emulated=true)
public final class Stopwatch
    extends Object

二、类方法

官方文档:https://google.github.io/guava/releases/27.0.1-jre/api/docs/com/google/common/base/Stopwatch.html

方法类型方法描述
static StopwatchcreateStarted() 
创建启动一个新的stopwatch对象,用的是System.nanoTime()作为时间资源。
static StopwatchcreateStarted(Ticker ticker) 
创建启动一个新的stopwatch对象,用的是特定的时间资源。
static StopwatchcreateUnstarted() 
创建(但不启动)一个新的stopwatch对象,用的是System.nanoTime()作为时间资源。
static StopwatchcreateUnstarted(Ticker ticker) 
创建(但不启动)一个新的stopwatch对象,用的是特定的时间资源。
Durationelapsed() 
返回将此秒表上显示的当前经过时间作为持续时间.
longelapsed(TimeUnit desiredUnit) 
用特定的格式返回这个stopwatch经过的时间.
booleanisRunning() 
如果start方法被调用。stop方法还没有调用。返回真.
Stopwatchreset() 
把stopwatch经过的时间设置为零,状态设置为停止.
Stopwatchstart() 
启动 stopwatch.
Stopwatchstop() 
停止stopwatch,读取的话将会返回经历过的时间.
StringtoString() 
返回字符串形式的elapsed time.

三、测试类

package com.example.guava.basic;

import com.google.common.base.Stopwatch;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.concurrent.TimeUnit;

/**
 * Stopwatch 测试
 */
public class StopwatchTest {

    private final Logger logger = LoggerFactory.getLogger(this.getClass());

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

        logger.info("订单 [{}] 开始处理", orderNo);
        Stopwatch stopwatch = Stopwatch.createStarted();

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

        logger.info("订单 [{}] 处理完成,耗时 [{}]", 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
    }
}

四、相关文章



未经允许请勿转载:程序喵 » Google Guava 快速入门 —— 【基础】计时器 StopWatch 类

点  赞 (0) 打  赏
分享到: