首页 > 编程语言 >java小知识-纳秒

java小知识-纳秒

时间:2024-11-26 11:22:02浏览次数:6  
标签:java 纳秒 知识 System 毫秒 time nanoTime

作者:京东物流 崔冬冬

一、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,纳秒,知识,System,毫秒,time,nanoTime
From: https://www.cnblogs.com/Jcloud/p/18569796

相关文章

  • 你会PHP、JAVA、Python或GO吗?都有做过哪些应用呢?
    PHP、Java、Python和Go都是广泛应用的编程语言,它们各自在不同的领域和场景中发挥着重要的作用。以下是它们各自的一些典型应用:PHPPHP是一种流行的服务器端脚本语言,特别适用于Web开发。以下是PHP的一些主要应用:电商:PHP是亚马逊网站的服务器端语言,用于处理订单、客户管理和产品......
  • 《JAVA编程思想》第四版 PDF 下载 中文版和英文版 高清PDF扫描带书签
     转载自:https://www.cnblogs.com/buwuliao/p/8073211.html非常感谢也可见:https://www.cnblogs.com/ChaoJieLiu/p/12910447.html一、链接:中文版+英文版+思维导图:链接:https://pan.baidu.com/s/1bmgOdC7gFhI4Waac6JV4Wg提取码:s3vc复制这段内容后打开百度网盘手机App,操作更方......
  • 网编(ip相关知识)
    目的:了解网络,掌握在linux下的网络编程,实现多机通信进程间通信方式:套接字socketC/SB/S学习方法:1. 记忆知识点主要记大框架,再记忆细节2. 按照框架和流程写代码3. 代码量比较大,出现问题先自己排查4. 重点在逻辑,代码可能会大量复制5. 项目重点先梳理项目框架,......
  • 华为OD机试 - 公共子串计算 (Java 2024 E卷 100分)
    华为OD机试2024E卷题库疯狂收录中,刷题点这里。实战项目访问:http://javapub.net.cn/专栏导读本专栏收录于《华为OD机试(JAVA)真题(E卷+D卷+A卷+B卷+C卷)》。刷的越多,抽中的概率越大,私信javapub,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注......
  • 华为OD机试 - 尼科彻斯定理 (Java 2024 E卷 100分)
    华为OD机试2024E卷题库疯狂收录中,刷题点这里。实战项目访问:http://javapub.net.cn/专栏导读本专栏收录于《华为OD机试(JAVA)真题(E卷+D卷+A卷+B卷+C卷)》。刷的越多,抽中的概率越大,私信javapub,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注......
  • 基于java仓库管理系统毕业设计源码
    一、环境信息开发语言:JAVAJDK版本:JDK8及以上数据库:MySql5.6及以上Maven版本:任意版本操作系统:Windows、macOS开发工具:Idea、Eclipse、MyEclipse开发框架:Springboot+HTML+jQuery+Mysql二、所有选题列表所有毕业设计选题列表,点击文章结尾下方卡片免费咨询三、功能介......
  • 基于java开发知识科普网站毕业设计源码+论文
    一、环境信息开发语言:JAVAJDK版本:JDK8及以上数据库:MySql5.6及以上Maven版本:任意版本操作系统:Windows、macOS开发工具:Idea、Eclipse、MyEclipse开发框架:Springboot+HTML+jQuery+Mysql二、所有选题列表所有毕业设计选题列表,点击文章结尾下方卡片免费咨询三、功能介......
  • JavaScript 编程精解(Eloquent)第四版·翻译完成
    JavaScript编程精解(Eloquent)第四版第一章:引言第一部分:语言第二章:值、类型和运算符第三章:程序结构第四章:函数第五章:数据结构:对象和数组第六章:高阶函数第七章:对象的秘密生活第八章:项目:一个机器人第九章:漏洞和错误第十章:正则表达式第十一章:模......
  • 小知识点
    1、可以在go.mod里设置一个package名,这样可以将这个package名作为go.mod所在目录的包名,导包的时候可以用这个名作为路径例如:2、time.UnixMilli()是以毫秒为单位获取时间戳3、typestrstring//可以把str同时视为一个string和一个类//可以给str添加方法func(sstr)s1()int......
  • Java面试要点41 - Java时间日期API
    文章目录一、引言二、传统日期时间API的不足三、Java8新日期时间API四、日期时间格式化与解析五、时区处理总结一、引言在Java开发中,时间日期处理是一个非常常见且重要的话题。从Java8开始,Java引入了全新的日期时间API,这些新的API不仅解决了原有java.util.Date......