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 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. |
三、测试类
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 类