欢迎访问宙启技术站
智能推送

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操作、线程等可能引起时间延迟的操作,否则计时结果可能不准确。