Guava:StopWatch 计时器

简介

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

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

  • 性能

  • 表现形式更丰富

类方法说明

官方文档:Stopwatch (Guava: Google Core Libraries for Java 27.0.1-jre API)

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

使用Demo

java 复制代码
import com.google.common.base.Stopwatch;
import org.junit.Test;

import java.util.concurrent.TimeUnit;

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

    @Test
    public void test1() throws Exception {

        Stopwatch stopwatch = Stopwatch.createStarted();

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

        System.out.println("耗时:"+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
    }
}
相关推荐
谢亮_vipxieliang8 天前
ValidX vs Google Guava Preconditions:验证 vs 断言
java·spring boot·后端·spring cloud·hibernate·guava
吴声子夜歌10 天前
Guava——散列
java·guava
吴声子夜歌10 天前
Guava——并发(二)
java·网络·guava
吴声子夜歌10 天前
Guava——事件总线
java·网络·guava
吴声子夜歌11 天前
Guava——并发(一)
java·guava
吴声子夜歌11 天前
Guava——反射
java·开发语言·guava
吴声子夜歌11 天前
Guava——基本工具(二)
windows·python·guava
吴声子夜歌11 天前
Guava——基本工具(一)
windows·guava
吴声子夜歌12 天前
Guava——集合(二)
java·guava
吴声子夜歌12 天前
Guava——缓存
缓存·guava