在精度要求不太高的使用场景中,可能需要知道某一个处理逻辑究竟用了多少秒,Java提供了方便的获取当前时间的方式,通过获取两个时间点的差值就能得到中间部分的代码运行时间了。
首先,Java中获得当前系统时间的方式是:
Long currentTime = System.currentTimeMillis();
这条语句会返回当前时间的毫秒数.
现在我们定义一个简单的计时器工具,未加入任何验证的逻辑,代码大概如下:
package com.anivia.blog.util; /** * 一个简单的时间计算工具 * @author MinLZ * @version 2015年9月25日 上午10:21:56 */ public class TimeMeter { //开始时间 private Long startTime; //结束时间 private Long endTime; //持续时间 private Long durationTime; public Long getStartTime() { return startTime; } public void setStartTime(Long startTime) { this.startTime = startTime; } public Long getEndTime() { return endTime; } public void setEndTime(Long endTime) { this.endTime = endTime; } public Long getDurationTime() { return durationTime; } public void setDurationTime(Long durationTime) { this.durationTime = durationTime; } //以上是 setter & getter //开始计时,获取当期时间 public void start() { this.startTime = System.currentTimeMillis(); } //结束计时,获取当前结束时间,并计算出差值 public void stop(){ this.endTime = System.currentTimeMillis(); this.setDurationTime(this.endTime - this.startTime); } }
调用的方式如下:
package com.anivia.blog.util; /** * @author MinLZ * @version 2015年9月25日 上午10:34:46 */ public class MainUtil { public static void main(String[] args) { TimeMeter timeMeter = new TimeMeter(); timeMeter.start(); for(int i = 0; i < 1000000; i++) { //do something } timeMeter.stop(); System.out.println("duration time:" + timeMeter.getDurationTime()); } }
以上就是这个TimeMeter的使用方式,不过尚未进行逻辑验证,稍微复杂的计时器应该加入当前计时器状态的验证,例如开始计时之后才能停止,多次停止不允许等等。
第一次写这个,如果有错误,请朋友不吝赐教。谢谢
时间: 2024-10-30 09:21:45