Java中System.nanoTime的方法详解

667 阅读1分钟

一、函数原型

public static long nanoTime()

这里引用了在官方API中的一段关键的描述:
The value returned represents nanoseconds since some fixed but arbitrary origin time (perhaps in the future, so values may be negative)
翻译如下: 返回的值表示从某个固定但任意的起始时间开始的纳秒数(可能在将来,因此值可能为负数)

在JVM Java虚拟机运行时,会设置某个固定但任意的起始时间T,在程序执行后t 纳秒后执行了语句System.nanoTime(),该函数的返回值为T+t (类型为long) 。

关于起始时间是依据什么计算出的一个值,为什么表示将来的时间是一个负数,目前我也不清楚,希望知道的小伙伴可以给我回复下。(注,应该不是依据UTC时间,1970年1月1日0时,表示的时间,此方法表示的将来的系统时间应该是正数。目前,并没有影响此方法的使用,暂未深究)。

二、应用

1 单个函数

Random类,伪随机数产生时的种子

2 两个函数组合

测试一段代码的执行时间

long startTime = System.nanoTime();
// 待测试代码
long endTime = System.nanoTime();