Guava之Stopwatch「建议收藏」

Guava之Stopwatch「建议收藏」Guava之Stopwatch计时器Stopwatch用来计算经过的时间(精确到纳秒)。这个类比调用System.nanoTime()优势在于:性能表现形式更丰富一、类声明以下是com.google.common.base.Stopwatch类的声明:publicfinalclassStopwatchextendsObject二、类方法方法类型方法…

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

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.net/152453.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ADRC自抗扰控制,有手就行「建议收藏」

    ADRC自抗扰控制,有手就行「建议收藏」由于串级PID还没搞定,就转向了自抗扰控制,用STM32控制无刷电机做了一个ADRC速度闭环,没静差是真的,但感觉也没想象中那么强,就写篇博文记录一下ADRC大概的使用方法和调参大致的方向。

    2022年5月19日
    126
  • redflag linux7.0 grub引导终极原创

    redflag linux7.0 grub引导终极原创很多同志在安装redflag时,安装引导时选了将引导安装在根分区而不是MBR分区,所以开机时还是只能进入XP系统而不能进入Linux系统其实要解决这个问题,引导进入redflag很简单,只要在xp下的C盘中找到menu.ls这个文件,用记事本找开,在其中添加title红旗Linux桌面7root(hd0,8)kernel/boot/vmlinuz-2.6….

    2022年8月20日
    6
  • 网线接口定义

    网线接口定义参考资料:http://blog.csdn.net/dog0138/article/details/7016351因为激光雷达插路由上不能识别IP地址,所以想确认网线接的是否正确,查了一下发现网上说的网线八芯定义都是DTE(数据终端设备)的定义,也即是我们一般用的PC,传感器这些主动传输数据的设备。1输出数据(+)2输出数据(-)3输入数据(+)4保留为电话使用5保

    2022年6月5日
    85
  • WinHTTP Web Proxy Auto-Discovery Service 服务处于 停止 状态「建议收藏」

    WinHTTP Web Proxy Auto-Discovery Service 服务处于 停止 状态「建议收藏」WinHTTPWebProxyAuto-DiscoveryService服务处于停止状态还有,我的服务器没有使用WEB代理和防火墙客户端。但是有一天早上来发现全部电脑都无法上网。PINGISA都不通。重新启动后正常。我检查系统日志里面有3条关于WEB代理的日志:1。TheWinHTTPWebProxyAuto-DiscoveryServicehas…

    2022年6月21日
    51
  • PHP小程序开发_微信小程序后端语言

    PHP小程序开发_微信小程序后端语言想要快速地开发一个小程序,很多环节都需要注意,微信小程序php后端的开发估计很多人都还很陌生,但是这也是至关重要的,一起来看看开发实例详解吧。1.小程序相对于之前的WEB+PHP建站来说,个人理解为只是将web放到了微信端,用小程序固定的格式前前端进行布局、事件触发和数据的输送和读取,服务器端可以用任何后端语言写,但是所有的数据都要以JSON的形式返回给小程序。2.昨天写了登录注册、忘记密码功能,…

    2022年9月17日
    1
  • git版本回退操作

    git版本回退操作搞懂 git 回退命令 如果不慎提交 可通过 gitreset gitrevert 来撤销操作

    2025年7月22日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

评论列表(1条)

  • Java03的头像
    Java03 2022年10月11日 上午9:28

    你说StopWatch比System.nanoTime()功能丰富我能理解,但你说StopWatch比nanotime性能更优我确实不太理解,StopWatch底层不还是用的System.nanoTime()吗,为什么性能更优呢?

关注全栈程序员社区公众号