一、函数原型
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();