Java 中的 System.nanoTime() 与 System.currentTimeMillis()
Java 中的时间操作是什么?
Java 环境提供了两种时间操作。对于与时间相关的操作,用户可以使用这些操作。
-
System.nanoTime()
-
System.currentTimeMillis()
System.nanoTime() 主要被称为昂贵的调用,用于获取更精确的时间值。而 System.currentTimeMillis() 最可靠的已过去时间,有助于根据操作系统获取时间值。第一个函数以纳秒为单位返回时间值(有时可能会返回负值),而第二个函数以毫秒为单位返回时间值。因此很明显,System.nanoTime()更胜一筹,并且由于其准确性而更受欢迎。
什么是 System.nanoTime() 和 System.currentTimeMillis()
-
Java 环境中的System.nanoTime() 方法有助于查找两个指针之间的差异。
-
简单来说,它有助于在进程开始之前获取一次时间读数,并在执行方法之后获取另一次时间读数。
-
不建议每次都对代码进行性能分析,因为时间可能会根据系统的操作系统而有所不同。因此,我们可能会遇到一些不准确性。
-
System.currentTimeMillis()是一个线程安全的方法,不会返回模棱两可的结果。
-
此函数将日期、时间和年份作为时间返回。
-
在参考固定的情况下,我们可以获得准确的输出。但是,当用户对系统时间进行一些更改时,它将在那一刻给出错误的结果。
System.nanoTime() 和 System.currentTimeMillis() 的比较
这是一个关于这两个特定 Java 时间操作的一般示例 -
package javalangtimeslot; import java.lang.*; public class javatimeslot { public static void main(String[] args) { System.out.print("Time in nanoseconds we can see here = "); System.out.println(System.nanoTime()); System.out.print("Time in milliseconds we can see here = "); System.out.println(System.currentTimeMillis()); } }
输出
Time in nanoseconds we can see here = 4083437933186033 Time in milliseconds we can see here = 1680778649732
使用 System.currentTimeMillis() 方法的 Java 程序
System.currentTimeMillis() 方法以毫秒为单位返回当前时间。此方法告诉我们代码的一部分执行需要多长时间。
System.currentTimeMillis() 的语法
System.currentTimeMillis(); --> java.language Package --> Declare System Class --> currentTimeMillis() Method
在 Java 中实现 System.currentTimeMillis() 的步骤
-
加载库。
-
使用TimeMillis() 方法声明 main() 方法。
-
显示毫秒、分钟、小时和天数。
-
打印输出。
示例 1
此示例演示如何获取当前时间(以毫秒为单位)并将其转换为秒、分钟、小时、天和年 -
import java.io.*; public class timefuncjava { public static void main(String[] args){ System.out.println("Milliseconds Are Here : " + System.currentTimeMillis()); System.out.println("Seconds Are Here: " + (System.currentTimeMillis())/ 2000); System.out.println("Minutes Are Here: " + (System.currentTimeMillis())/ 2000 / 120); System.out.println("Hours Are Here: " + (System.currentTimeMillis())/ 2000 / 120 / 120); System.out.println("Days Are: " + (System.currentTimeMillis())/ 2000 / 120 / 120 / 48); System.out.println("Years Total: " + (System.currentTimeMillis()) / 2000 / 120 / 120 / 48 / 365); System.out.println("Milliseconds Are Here : " + System.currentTimeMillis()); System.out.println("Seconds Are Here: " + (System.currentTimeMillis())/ 2000); System.out.println("Minutes Are Here: " + (System.currentTimeMillis())/ 2000 / 120); System.out.println("Hours Are Here: " + (System.currentTimeMillis())/ 2000 / 120 / 120); System.out.println("Days Are: " + (System.currentTimeMillis())/ 2000 / 120 / 120 / 48); System.out.println("Years Total: " + (System.currentTimeMillis()) / 2000 / 120 / 120 / 48 / 365); } }
输出
Milliseconds Are Here : 1680778875055 Seconds Are Here: 840389437 Minutes Are Here: 7003245 Hours Are Here: 58360 Days Are: 1215 Years Total: 3 Milliseconds Are Here : 1680778875062 Seconds Are Here: 840389437 Minutes Are Here: 7003245 Hours Are Here: 58360 Days Are: 1215 Years Total: 3
在此构建代码中,我们使用了 TimeMillis 来获取毫秒、秒、分钟、小时、天和年。
示例 2
此示例演示如何使用System.currentTimeMillis()测量运行循环所花费的时间 -
public class timeprogjava{ public static void main(String args[]){ long starting, ending; System.out.println("Timing a loop from 0 to 100,000,000,000"); starting= System.currentTimeMillis(); for(long k=0;k<100000000000L;k++); ending=System.currentTimeMillis(); System.out.println("Elapsed time Is: "+(ending-starting)); } }
输出
Timing a loop from 0 to 100,000,000,000
使用 System.nanoTime() 方法的 Java 程序
System.nanoTime() 方法是 Java 环境中的一个高精度时间池,以纳秒为单位。此方法始终返回当前值。
System.nanoTime() 的语法
public static long nanoTime() long process startTime = System.nanoTime(); long process estimatedTime = System.nanoTime() - startTime;
在 Java 中实现 System.nano.Time() 的步骤
-
加载库。
-
使用System.nanoTime()声明main() 方法。
-
显示 2 的乘法表。
-
循环将生成 2 的倍数(2x 倍数)。
-
打印给定输入的输出。
示例 1
使用 nano Time() -difference,我们可以计算空循环消耗的时间,以便在下一次 1000 次循环中运行。我们将获得循环之前和之后的输出时间 -
public class javacodetime { public static void main(String args[]) { long nanoTime2 = System.nanoTime(); for(int k=0; k < 10000; k++) { } long nanoTime5 = System.nanoTime(); long runTimeInNanoSeconds = nanoTime5 - nanoTime2; System.out.println("Time taken to execute the process by for loop : " + runTimeInNanoSeconds + " nano seconds"); } }
输出
Time taken to execute the process by for loop : 132509 nano seconds
示例 2
此示例将帮助我们使用System.nanoTime() 方法以纳秒为单位获取当前时间 -
public class javatimecode { public static void main(String args[]) { long nanoTime = System.nanoTime(); System.out.println("Current time as in Nano Seconds : "+nanoTime); } }
输出
Current time as in Nano Seconds : 4084089973012410
结论
总之,当问题过于繁重时,需要使用System.nano Time() 方法。对于像高清游戏这样的快速性能,纳秒时间操作是最佳选择。但为了获得准确的输出,我们可以使用System.currentTimeMillis()。
在本文中,我们学习了如何使用两种时间方法获取时间。我们还使用逻辑构建了一些 Java 代码。