0
点赞
收藏
分享

微信扫一扫

今天看Guava源码,碰到Stopwatch,它是什么鬼

小安子啊 2022-04-21 阅读 49

确实是,这样也能统计这段代码的执行时间,那么为什么还会有Stopwatch(我也有这种想法)

官方称不直接使用System#nanoTime是有以下几个原因:

  • 时间源可以替代 可以重写Ticker(下面会介绍)

  • nanoTime的返回值是纳秒,返回的值没有意义,Stopwatch抽象返回值

下面从实现方式来分析下guava为什么会设计这么类

[](()源码分析

内部有几个成员变量

//时间源 一般和Stopwatch一起使用,而不是单独使用

private final Ticker ticker;

private boolean isRunning;

private long elapsedNanos;

private long startTick;

先看下Ticker(是个abstract类) 都有什么:

public static Ticker systemTicker() {

return SYSTEM_TICKER;

}

private static final Ticker SYSTEM_TICKER =

new Ticker() {

@Override

public long read() {

// 实际上就是System.nanoTime();

return Platform.systemNanoTime();

}

};

// 子类重写

public abstract long read();

回到Stopwatch,看下它的构造方式:

public static Stopwatch createUnstarted() {

return new Stopwatch();

}

/**

  • Creates (but does not start) a new stopwatch, using the specified time source.

  • @since 15.0

*/

public static Stopwatch createUnstarted(Ticker ticker) {

return new Stopwatch(ticker);

}

/**

  • Creates (and starts) a Java开源项目【ali1024.coding.net/public/P7/Java/git】 new stopwatch using {@link System#nanoTime} as its time source.

  • @since 15.0

*/

public static Stopwatch createStarted() {

return new Stopwatch().start();

}

Stopwatch() {

this.ticker = Ticker.systemTicker();

}

Stopwatch(Ticker ticker) {

this.ticker = checkNotNull(ticker, “ticker”);

}

包括创建不启动,创建启动的构造方式

执行流程

start–> stop 或者 reset

看下代码,很简单

public Stopwatch 《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》开源 start() {

// 先判断是否处于执行状态

checkState(!isRunning, “This stopwatch is already running.”);

最后

本人也收藏了一份Java面试核心知识点来应付面试,借着这次机会可以送给我的读者朋友们

目录:

全靠这套面试题,才让我有惊无险美团二面拿offer  (面经解析)

Java面试核心知识点

一共有30个专题,足够读者朋友们应付面试啦,也节省朋友们去到处搜刮资料自己整理的时间!

全靠这套面试题,才让我有惊无险美团二面拿offer  (面经解析)

Java面试核心知识点

已经有读者朋友靠着这一份Java面试知识点指导拿到不错的offer了

全靠这套面试题,才让我有惊无险美团二面拿offer  (面经解析)

a面试核心知识点

一共有30个专题,足够读者朋友们应付面试啦,也节省朋友们去到处搜刮资料自己整理的时间!

[外链图片转存中…(img-tVOVyq5F-1650444646213)]

Java面试核心知识点

已经有读者朋友靠着这一份Java面试知识点指导拿到不错的offer了

[外链图片转存中…(img-rigJGv1I-1650444646214)]

举报

相关推荐

0 条评论