0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

java小知识-纳秒

京东云 来源:京东物流 崔冬冬 作者:京东物流 崔冬冬 2024-11-26 11:11 次阅读

作者:京东物流 崔冬冬

一、System.nanoTime()

java中,有这么一个方法System.nanoTime() ,你用过吗?

二、与System.currentTimeMillis()对比

System.currentTimeMillis()我们经常使用,可以参考对比一下

看方法意思,一个是纳秒,一个是毫秒,二者有关系吗?

先看看单位换算:一秒=1000毫秒 1毫秒=1000微秒 1微秒=1000纳秒

那么1毫秒=1000000纳秒,二者是不是这样的倍数关系?

带着疑问,我们本地打印测试一下

System.out.println("毫秒="+System.currentTimeMillis());
System.out.println("纳秒="+System.nanoTime());
输出:
毫秒=1729763507201
纳秒=257832682992

很显然,不是 1:1000000的关系,具体是什么呢?

三,方法解释

看一下源码中的方法解释

Returns the current value of the running Java Virtual Machine's high-resolution time source, in nanoseconds. This method can only be used to measure elapsed time and is not related to any other notion of system or wall-clock time. The value returned represents nanoseconds since some fixed but arbitrary origin time (perhaps in the future, so values may be negative). The same origin is used by all invocations of this method in an instance of a Java virtual machine; other virtual machine instances are likely to use a different origin.

大概意思,该方法返回正在运行的Java虚拟机的高分辨率时间源的当前值,单位为纳秒。系统启动时间到现在经历的时间,与任何其他系统或挂钟时间概念无关。

四,使用场景

如此精度的时间,使用场景有哪些呢

1) 性能分析:常用于性能分析和优化,System.nanoTime()可以测量代码段的执行时间,帮助开发人员找出性能瓶颈并进行优化。

比如:一个简单的for循环,我们用System.nanoTime()计时,可以见更精细的耗时。

2) 计时器:在需要精确计时的场景下,如计算程序执行时间、延迟等,System.nanoTime()可以提供更精确的时间信息,避免受系统时间调整的影响。

3) 并发控制:在多线程编程中,我们可能需要实现一些并发控制策略,如超时控制、任务调度等。可以用于获取时间戳,帮助实现这些并发控制策略。

4) 随机种子:Random类构造函数中使用System.nanoTime()作为种子值,提高随机性。具体可以看一下Random类。

五,简单总结

1)System.nanoTime()是高精度计数器,是相对时间。

2)jdk源码中很多地方使用了System.nanoTime(),我们可以学习参考。

3)小知识分享,不足之处欢迎大家指正,关于java里的知识点也欢迎大家讨论分享。

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • JAVA
    +关注

    关注

    19

    文章

    2978

    浏览量

    105322
收藏 人收藏

    评论

    相关推荐

    激光脉冲诱导硅表面微结构

    【作者】:袁春华;李晓红;唐多昌;杨宏道;【来源】:《强激光与粒子束》2010年02期【摘要】:利用Nd:YAG激光脉冲,在能量密度为1~10 J/cm2范围内辐照单晶硅,形成了表面锥形微结构
    发表于 04-22 11:41

    硬件如何实现一个信号的级精确延时?

    器件或电路后 -> 实现输出延时5后才上跳,5的精确度不要超过正负20% ........ 该如何实现?
    发表于 12-04 15:43

    求助,c51级的延时,要怎么获得???

    在用到ds18b20的时候,那些读写函数要做几百的延时,不知道怎么获得????
    发表于 03-11 21:04

    积分电路能否积分级脉冲信号

    请教积分电路的问题,积分电路能否对几十的脉冲信号进行积分?如果可以对积分电路的参数设计有什么要求?谢谢~
    发表于 10-30 18:25

    用于单电源供电的七比较器

    DN185- 用于单电源供电的七比较器
    发表于 07-24 16:59

    Rogowski线圈信号电阻对级脉冲大电流的响应

    Rogowski线圈信号电阻对级脉冲大电流的响应:
    发表于 10-31 14:18 15次下载

    脉冲检测电路图

    脉冲检测电路图
    发表于 12-24 22:05 864次阅读
    <b class='flag-5'>纳</b><b class='flag-5'>秒</b>脉冲检测电路图

    级窄脉冲发生器电路

    级窄脉冲发生器电路
    发表于 02-28 11:48 3176次阅读
    <b class='flag-5'>纳</b><b class='flag-5'>秒</b>级窄脉冲发生器电路

    JAVA相关基础知识

    JAVA相关基础知识,感兴趣的小伙伴们可以瞧一瞧。
    发表于 11-10 11:17 0次下载

    Java设计知识讲解

    本文档内容介绍了基于Java设计知识讲解,供参考
    发表于 03-26 11:09 16次下载

    Java程序设计教程之Java语言的基础知识概述

    本文档详细介绍的是Java程序设计教程之Java语言的基础知识概述主要内容包括了:1.Java语言发展简史,2.Java的特点(为什么要学习
    发表于 02-22 10:28 36次下载
    <b class='flag-5'>Java</b>程序设计教程之<b class='flag-5'>Java</b>语言的基础<b class='flag-5'>知识</b>概述

    关于JAVA的相关基础知识

    JAVA相关基础知识,Arrays.sort(数组名)—给数组排输出,String是最基本的数据类型等等
    发表于 09-23 15:22 0次下载

    瞬态吸收光谱仪-EOS

    宽带泵浦探针瞬态吸收光谱仪,可以匹配各种脉冲激光器。作为一个完整的交钥匙系统,EOS是一款易于调整时间窗口的瞬态光谱测量系统,并拥有亚的时间分辨率。EOS
    的头像 发表于 04-14 07:18 952次阅读
    <b class='flag-5'>纳</b><b class='flag-5'>秒</b>瞬态吸收光谱仪-EOS

    激光加工激光、皮激光、飞激光,你分得清吗?

    大家对激光加工并不陌生,但你对经常能听到的激光、皮激光、飞激光等,你是否能分得清呢?▌我们先来搞清楚时间单位换算1ms(毫秒)=0.001
    的头像 发表于 06-21 17:25 1511次阅读
    激光加工<b class='flag-5'>纳</b><b class='flag-5'>秒</b>激光、皮<b class='flag-5'>秒</b>激光、飞<b class='flag-5'>秒</b>激光,你分得清吗?

    激光焊接机如何实现高精度焊接

    编辑:镭拓激光激光焊接机实现高精度焊接主要依赖于先进的激光技术和精确的控制系统。以下是镭拓小编为大家总结的激光焊接机实现高精度焊接的几点关键因素:1.激光技术:
    的头像 发表于 01-29 15:38 1084次阅读
    <b class='flag-5'>纳</b><b class='flag-5'>秒</b>激光焊接机如何实现高精度焊接