资讯专栏INFORMATION COLUMN

Java语言中两种常用的计时器

IT那活儿 / 707人阅读
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那活儿”公众号

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129347.html

相关文章

  • three.js两种常用摄像机模式

    摘要:中常用的有两种,透视投影相机与正交投影相机。这里的投影是指将三维空间中的物体坐标投影到二维平面上。正交投影是只考虑所有点的坐标,每一个二维空间中的点都是与轴平行的直线在观察平面上的投影。所看到的物体大小不会受到距离远近的影响。 three.js中常用的camera有两种,透视投影相机(PerspectiveCamera)与正交投影相机(OrthographicCamera)。这里的投影...

    fish 评论0 收藏0
  • 数据库之事务与并发控制

    摘要:悲观锁非常影响并发性能,所以谨慎使用乐观锁假定当前事务操纵数据资源时,不会有其他事务同时访问该数据资源,乐观锁使用由程序逻辑控制的技术来避免可能出现的并发问题。读取出数据时,将此版本号一同读出,之后更新时,对此版本号加一。 一.事务的特性(ACID) 1.原子性:单个或多个操作为一个整体,要么全执行,要么全不执行(回滚) 2.一致性:事务执行是从一个一致性状态转为另一个一致性状态 ...

    aaron 评论0 收藏0
  • Message Loop 原理及应用

    摘要:此文已由作者王荣涛授权网易云社区发布。新消息的添加可能来自于本线程也可能来自于其他线程,甚至包括其他进程中的线程。另一种结束消息循环的方式是强制中止其所属线程的执行,当然了,这是极不推荐的。 此文已由作者王荣涛授权网易云社区发布。 欢迎访问网易云社区,了解更多网易技术产品运营经验。 Message loop,即消息循环,在不同系统或者机制下叫法也不尽相同,有被叫做event loop,...

    时飞 评论0 收藏0
  • GET、POST请求区别分析

    摘要:对数据长度的限制是的。安全性与相比,的安全性较差,因为所发送的数据是的一部分。和只是协议中两种请求方式,而协议是基于的应用层协议,无论还是,用的都是同一个传输层协议,所以在传输上,没有区别。 1 前言 众所周知,在我们开发项目的过程中,关于POST与GET请求是我们不得不掌握的知识,那么它们两者之间又有什么区别呢?接下来,我们一起从HTTP报文等角度来探讨学习一下关于两者的不同 2 H...

    Baoyuan 评论0 收藏0
  • IBM Bluemix开启云开发时代

    摘要:运行时环境,又叫构建包上提供的一系列运行时环境包括图中显示的七种命名构建包,外加已批准用于的其他任何构建包。开发运营服务上的八种开发运营服务包括来自的五种服务和来自第三方的三种服务。 去年夏天我测评了Cloud Foundry PaaS(平台即服务),当时着眼于Pivotal和ActiveState这两种解决开源方案。这回测试时,我将关注IBM Bluemix,这是在SoftLayer上托管...

    cocopeak 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<