专注Java教育14年 全国咨询/投诉热线:444-1124-454
赢咖4LOGO图
始于2009,口口相传的Java黄埔军校
首页 学习攻略 Java学习 Java运行时间计算的方法

Java运行时间计算的方法

更新时间:2022-08-11 11:43:20 来源:赢咖4 浏览1727次

Java运行时间计算的方法是什么?现在赢咖4小编为大家介绍一些在 Java 中执行经过时间计算的主要方法。对Java感兴趣的小伙伴也可以关注一下Java赢咖4在线学习,里面的课程内容从入门到精通,相信对大家的学习一定会有所帮助的。

快速、简单且通常不正确的方法:System.currentTimeMillis()

我们从一个简单但通常不正确的解决方案开始我们在 Java 中测量经过时间的方法列表。首先,我们将展示一个如何执行计算的快速示例,然后我们将解释代码:

长启动=系统。当前时间米利斯();// 一段时间过去了long end = System . 当前时间米利斯();long elapsedTime =结束-开始; 

在上面的示例中,我们使用“System.currentTimeMillis()”静态方法。该方法返回一个 long 值,它指的是自 1970 年 1 月 1 日以来的毫秒数,以 UTC 表示。那么,为什么这个解决方案有问题呢?

您从差异中得到的结果可能不准确,因为该方法测量的是我们所说的“挂钟时间”。这意味着它可能因多种原因而发生变化,包括系统时钟甚至闰秒的变化。

因此,简而言之,如果您需要高精度,则应避免使用 currentTimeMillis() 方法来计算经过时间。

同样快速,也容易且更可能是正确的方法:System.nanoTime()

现在让我们看看另一种计算经过时间的方法。我们将首先注意到该示例,然后对其进行评论。

长启动=系统。纳米时间();// 一段时间过去了long end = System . 纳米时间();long elapsedTime =结束-开始; 

如您所见,代码看起来很像前面示例中的代码。唯一的区别是现在我们使用的是“nanoTime()”方法而不是“currentTimeMillis()”。那么,这两种方法有什么区别呢?

第一个显着的区别是“nanoTime()”,顾名思义,以纳秒为单位返回结果。根据文档,我们可以看到其返回值的来源是 JVM(Java 虚拟机)的高分辨率时间源。

该文件还强调了其他一些重要事实。第一个是您只能使用这种方法来计算经过的时间。换句话说,方法返回的值没有意义,因为它与任何时间系统都没有关系。

使用此方法时要记住的另一件重要事情是,虽然它提供纳秒级精度,但不一定提供纳秒级分辨率。这里的“分辨率”是指更新值的频率。

最后,请记住该方法不是线程安全的。

秒表类

现在,我们将通过介绍 Apache Commons Lang API 提供的 StopWatch 类将重点转向库。让我们看一个简单的例子:

 秒表手表=新的秒表(); 
 观看。开始();// 调用你想要对
 watch进行基准测试的方法。停止();长结果=观看。获取时间();  

从上面的代码可以看出,StopWatch 的使用非常简单。您可以通过调用“start()”方法开始计时。然后你做你需要执行的任何任务。之后,您就可以调用“stop()”,然后调用“getTime()”,它将返回以毫秒为单位的经过时间。请记住,此类呈现时间耦合。例如,这意味着您不能停止尚未启动的时钟或启动已经运行的时钟。尝试这样做将导致抛出异常。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>