java currentTimeMillis() nanoTime() 介绍

本文对比了Java中两种计时方法:System.currentTimeMillis()与System.nanoTime()。前者自Java早期版本以来一直存在,返回从1970年1月1日至今的毫秒数,但其精度受限于系统实现。后者在JDK5.0引入,提供纳秒级精度,更适合现代高性能计算需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

...[@more@]Java 编程语言有一个计时方法,从早期版本起它就是标准 API 的一部分。这个方法是 java.lang.System.currentTimeMillis(),它返回从 UTC 1970 年 1 月 1 日午夜开始经过的毫秒数。这个方法非常有用,特别是它在各个版本的 Java 平台上都有。因此,在 上个月 我的初始方面演示代码中,我使用了它。不过,currentTimeMillis() 也有一些缺点。

currentTimeMillis() 的一个问题是,它虽然是以毫秒计数返回时间,但是不能保证返回的计数的粒度或精度。在一些系统上,时间是真正的毫秒计数,大约每一毫秒改变一次。在另一些系统上,时间可能每隔 10 或 20 毫秒才变一次,因此每一次的精度都可能变化。

另一个局限是在方法定义中的基本时间单位。当 Java 平台第一次开始使用时,一毫秒仍然是相当短的时间间隔(特别是对于解释语言)。今天,随着 CPU 时钟速度比第一次发布 Java 平台时快了近一百倍,一毫秒已经成了相对长的一段时间。

在 JDK 5.0 中,Sun 增加了另一个方法 java.lang.System.nanoTime(),它可以提供更好的计时信息。顾名思义,nanoTime() 返回一个以纳秒为单位的时间值,提供了比 currentTimeMillis() 方法精确一百万倍的精度。即使当今的大多数系统无法提供纳秒精度的时间,但是实际值应当至少比用老的方法获得的要好得多。


来源: http://blog.itpub.net/771165/viewspace-849668/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值