Java语言中两种常用的计时器
Java语言中两种常用的计时器 来源: https://www.ucloud.cn/yun/129347.html 作者: IT那活儿 发布日期: 发布于2023 01 11 13:19 Java语言中两种常用的计时器 点击上方“IT那活儿 ”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!! 代码中经常会用
来源: https://www.ucloud.cn/yun/129347.html 作者: IT那活儿 发布日期: 发布于2023-01-11 13:19
Java语言中两种常用的计时器
点击上方“IT那活儿**”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!**
代码中经常会用到一些计时器来记录某个逻辑的使用时间,那么哪种计时器好用且优雅,下面我们来使用和对比一下。
System.currentTimeMillis()
首先是我们最常用的System.currentTimeMillis(),相信非常多的人看到计时器的第一反应就是想到他,这个计时器表较简单功能单一,可是如果一个方法中用多了也很让人感觉冗余,看起来也并不是很优雅。

StopWatch工具类
那么StopWatch这个工具类呢我也是最近才接触的,**重点推荐大家使用。**它是org.springframework.util包下的一个工具类,那么对于它的用法呢我们今天来简单的研究一下。
首先进入StopWatch类,看一下类成员以及方法,熟悉一下方便我们接下来的使用。它的类成员:
- taskList
- startTimeMillis
- currentTaskName
- lastTaskInfo
- taskCount
- totalTimeMillis
我们大致可以看出这个类会统计任务数,总耗时等信息,接下来我们开始使用。
首先引入jar包,Spring Boot已经引入该包。
<dependency><groupId>org.springframeworkgroupId><artifactId>spring-coreartifactId><version>${spring.version}version>dependency>

简单试用一下统计用时等方法:

这个使用时需要注意获取用时统计、任务数量需要在stop方法之后不然将无法获取。
然而有些方法就需要在stop方法之前使用,比如说currentTaskName获取当前正在执行的任务名如下图:

当然还有更好用的方法:prettyPrint获取任务执行信息如下图,这个方法看起来就很高大上。

那么来一个多个任务统计用时和数量的例子,如下图:


从统计结果可以看出,这里统计的还是比较详细的。
StopWatch工具类还有更多好用方法,这里我总结了一下如下图:

使用StopWatch类时需要注意以下几点:
- StopWatch不是设计为线程安全的,并且不使用同步。
- 一个StopWatch实例一次只能开启一个task,不能同时start多个task,在该task还没stop之前不能start一个新的task,必须在该task stop之后才能开启新的task。

本文作者:段席超(上海新炬王翦团队)
本文来源:“IT那活儿”公众号
