System.nanoTime理解

Posted 那啥快看

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了System.nanoTime理解相关的知识,希望对你有一定的参考价值。

JDK1.5之后java中的计时给出了更精确的方法:System.nanoTime(),输出的精度是纳秒级别,这个给一些性能测试提供了更准确的参考。 

但是这个方法有个需要注意的地方,不能用来计算今天是哪一天(应该也没人这么傻,只是早上我突然想起) 

看到这个方法不由得会想起System.currentTime(),这个方法,它的精度是毫秒,返回值是从1970.1.1的零点开始到当前时间的毫秒数,理论上这个可以用来算当前的时间,而且可以用这个值来构造一个Date对象。但是System.nanoTime()却是不同,代码注释上有这么一句: The value returned represents nanoseconds since some fixed but arbitrary time (perhaps in the future, so values may be negative). 

这个返回值是一个从确定的值算起的,但是这个值是任意的,可能是一个未来的时间,所以返回值有可能是负数。(我的英语很蹩脚,意思应该能明白吧)

所以说这个System.nanoTime()方法只能用来计时,例如: 

long s = System.nanoTime(); 

以上是关于System.nanoTime理解的主要内容,如果未能解决你的问题,请参考以下文章

java的System.currentTimeMillis()和System.nanoTime()

为啥 System.nanoTime() 比 System.currentTimeMillis() 慢(在性能上)?

System.nanoTime与System.currentTimeMillis的区别

将 System.currentTimeMillis() 与 System.nanoTime() 结合使用是不是合理?

System.nanoTime()和System.currentTimeMillis()性能问题

统计代码执行时间时,System.currentTimeMillis()与System.nanoTime()哪个更适合?