纳秒
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();
}
}
网友评论