currentTimeMillis函数获取Java程序运行时间
发布时间:2023-06-27 04:46:29
在编写Java程序时,我们常常需要获取程序运行的时间,以方便我们对程序的性能进行检测和优化。Java提供了一个用于获取当前时间的方法——System.currentTimeMillis(),本文将介绍如何使用该方法获取Java程序运行时间。
System.currentTimeMillis()方法的返回值为当前时间与1970年1月1日0时0分0秒之间的时间差,单位为毫秒。因此,我们可以通过调用该方法获取Java程序的启动时间,然后在程序结束时再次调用该方法获取程序当前时间,二者相减即可得到程序的运行时间。
下面是一个简单的示例代码:
public class Main {
public static void main(String[] args) throws InterruptedException {
long start = System.currentTimeMillis(); // 获取程序启动时间,单位毫秒
Thread.sleep(2000); // 模拟程序运行2秒
long end = System.currentTimeMillis(); // 获取程序当前时间,单位毫秒
long duration = end - start; // 计算程序运行时间,单位毫秒
System.out.println("程序运行时间:" + duration + "毫秒");
}
}
程序输出:
程序运行时间:2000毫秒
在实际开发中,我们可能需要更精确地获取程序运行时间,毫秒级别的精度可能无法满足需求。此时,我们可以使用System.nanoTime()方法获取系统时钟的当前值,其返回值为纳秒级别的精度。同样地,我们可以在程序启动时和程序结束时各调用一次该方法,然后计算二者之差,即可得到程序运行时间。
下面是一个示例代码:
public class Main {
public static void main(String[] args) throws InterruptedException {
long start = System.nanoTime(); // 获取程序启动时的系统时钟值,单位纳秒
Thread.sleep(2000); // 模拟程序运行2秒
long end = System.nanoTime(); // 获取程序结束时的系统时钟值,单位纳秒
long duration = (end - start) / 1000000L; // 计算程序运行时间,单位毫秒
System.out.println("程序运行时间:" + duration + "毫秒");
}
}
程序输出:
程序运行时间:2000毫秒
在使用System.currentTimeMillis()和System.nanoTime()方法时需要注意以下几点:
1. System.currentTimeMillis()方法返回的时间精度为毫秒级别,适用于较长时间的计时,例如秒级以上的时间间隔;
2. System.nanoTime()方法返回的时间精度为纳秒级别,适用于短时间内的计时,例如毫秒级以下的时间间隔,但是该方法可能受到系统时钟调整和CPU调度等因素的影响,可能出现负值或大幅度变化的情况;
3. 在获取程序运行时间时应该尽量避免调用系统I/O操作、线程等可能引起时间延迟的操作,否则计时结果可能不准确。
