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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 制作直通网线和交叉网线「建议收藏」

    制作直通网线和交叉网线「建议收藏」制作直通网线和交叉网线双绞线的连接方法有两种:直通连接和交叉连接。直通连接是将双绞线的两端分别都依次按白橙、橙、白绿、蓝、白蓝、绿、白棕、棕色的顺序(国际EIA/TIA568B标准)压入RJ45水晶头内。这种方法制作的网线用于计算机与集线器的连接。交叉连接是将双绞线的一端按国际标准EIA/TIA568B标准压入RJ45水晶头内。另一端将芯线依次按白绿、绿、白橙、蓝、白蓝、橙、白棕、棕色的顺序(国际EIA/TIA568A标准)压入RJ45水晶头内。这种方法制作

    2022年6月19日
    30
  • visio2013首要事项闪退_visio一保存就闪退

    visio2013首要事项闪退_visio一保存就闪退问题描述visio2013安装完成后,新建流程图或者打开流程图,程序就会自动关闭,为了找到错误,我们打开“控制面板->事件查看器->windows事件日志”可以看到一个错误日志,错误如下:错误应用程序名称:VISIO.EXE,版本:15.0.4420.1017,时间戳:0x506742a9错误模块名称:VISLIB.dll,版本:15.0.4420.1017,时间戳:0x506741bc异常代码:0xc0000005错误偏移量:0x000000000010a887错

    2022年9月13日
    0
  • Java重命名文件

    Java重命名文件

    2022年1月17日
    39
  • 哈佛幸福课–部分笔记

    哈佛幸福课–部分笔记(仅供参考)灵性超越对宇宙的更高目的和意义有一致的信念,知道自己在大计划中的位置,对生活的意义有信念,能塑造行为并提供安慰。2.公平正义3.诚实勇气4.善良人类5.判断

    2022年7月1日
    20
  • JS获取当前时间(年月日时分秒)「建议收藏」

    JS获取当前时间(年月日时分秒)「建议收藏」JS获取当前时间(年月日时分秒)JS获取当前时间(年月日时分秒)代码直接撸:**拿走直接用`//获取当前时间getNowTime(){vardate=newDate();//年getFullYear():四位数字返回年份varyear=date.getFullYear();//getFullYear()代替getYear()//月getMonth():0~11varmonth=date.getMonth()+1;//日getDate():(1

    2022年9月23日
    0
  • GC算法[通俗易懂]

    GC算法[通俗易懂]JVM(JavaVirtualMachine) GC是什么?频繁收集Young区 较少收集Old区 基本不动Perm区  JVM在进行GC时,并非每次都对上面三个内存区域一起回收的,大部分时候回收的都是指新生代,因此GC按照回收的区域又分了两种类型,一种是普通GC(minorGC),一种是全局GC(majorGCorFullGC) 普通GC(…

    2022年6月29日
    26

发表回复

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

评论列表(1条)

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

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

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