该方法返回当前时间,以毫秒为单位。
记录的是系统时间距离1970年1月1日的毫秒数UTC(绝对时间),也就是我们常说的时间戳。
从源码中可以看到,这个方式是一个native方法,该值由底层提供。
该方法可以用来计算当前日期,当前星期几等,与Date的换算非常方便,JDK提供了相关的接口来换算。
通过该方法获取的值的依赖的是当前系统的日期和时间,可以在系统设置中进行设置和修改。
如果用户更改系统时间、达到闰秒或 NTP 同步发生更改,则可能会给出错误的结果。
该方法返回相对时间,以纳秒为单位。
仅仅用于测量已经逝去的时间,并且与任何其它系统或者挂钟时间概念无关。
该返回值表示从某个固定但任意的原点时间(可能在未来,所以值可能是负数)开始的纳秒数。
仅仅只有当在同一java虚拟机实例中获取的两个值之间的差值被计算时,返回值才有意义。
不同虚拟机的相对的时间点不一样是随机的。在同一个JVM中,不同的地方使用的原点时间是一样的。
常用于测量某代码执行花费了多长时间
long startTime = System.nanoTime();
//...被测量的代码...
long duration = System.nanoTime() - startTime;
TimeUnit.NANOSECONDS.toMillis(duration);