美文网首页
System.nanoTime()

System.nanoTime()

作者: 飘逸小天 | 来源:发表于2019-05-13 16:20 被阅读0次

纳秒

ns(nanosecond):纳秒, 时间单位。一秒的10亿分之一,即等于10的负9次方秒。常用作 内存读写速度的单位。

1纳秒=0.000001 毫秒

1纳秒=0.00000 0001秒

 java的System.currentTimeMillis()和System.nanoTime()区别:

 java中System.nanoTime()返回的是纳秒,nanoTime而返回的可能是任意时间,甚至可能是负数。

 java中System.currentTimeMillis()返回的毫秒,这个毫秒其实就是自1970年1月1日0时起的毫秒数.  <<======== 注意

(所以照就 毫秒与纳秒 不是1000000倍数 关系)

两个方法都不能保证完全精确,精确程度依赖具体的环境.

其他:

1

https://blog.csdn.net/paul_lh/article/details/6419982

 https://blog.csdn.net/u012581453/article/details/53706573

2

1秒=1000毫秒(ms), 1毫秒=1/1000秒(s);

1秒=1000000 微秒(μs), 1微秒=1/1000000秒(s);

1秒=1000000000 纳秒(ns),1纳秒=1/1000000000秒(s);

1秒=1000000000000皮秒 1皮秒==1/1000000000000秒。

3

package com.cassandra;

/**

 * 测试java纳秒操作

 * @author mapeijie

 */

public class NanoSecondTest{

/**

java纳秒级操作事项

1--JDK5.0之后才有纳秒API--long System.nanoTime();

2--精度因操作系统而差异--win和linux结果差异很大

3--win32暂不支持纳秒操作

4--1 sec == 1000 mill sec == 1000 nano sec

5--NoSql and cached 经常会有纳秒级操作:cassandra的Timestamp默认是纳秒.

*/

public static void NanoSec(){

java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd hh:mm:ss.S");

long startNano = System.nanoTime();

long startMill = System.currentTimeMillis();

for(int i = 1 ; i <= 1000 ; i++){

long nano = System.nanoTime();

System.out.print(sdf.format(new java.util.Date(nano)) + "<=>");

System.out.print(sdf.format(new java.util.Date(nano/(1000))) + "<-->");

if(i%2 == 0){

System.out.println();

}

}

System.out.println("nano:" + (System.nanoTime() - startNano));;

System.out.println("mill:" + (System.currentTimeMillis() - startMill));;

System.out.println(System.currentTimeMillis());

System.out.println(System.nanoTime());

System.out.println(Long.MAX_VALUE);

System.out.println(Long.MIN_VALUE);

}

public static void main(String args []){

NanoSec();

}

}

相关文章

网友评论

      本文标题:System.nanoTime()

      本文链接:https://www.haomeiwen.com/subject/tdtlaqtx.html