System.nanoTime()

纳秒

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();

}

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容