java的System.currentTimeMillis()和System.nanoTime()有什么区别?

纳秒

  ns(nanosecond):纳秒, 时间单位。一秒的10亿分之一,即等于10的负9次方秒。常用作 内存读写速度的单位,其前面数字越小则表示速度越快。
  1纳秒=1000 皮秒 
  1纳秒 =0.001 微秒
  1纳秒=0.000001 毫秒

  1纳秒=0.00000 0001

java的System.currentTimeMillis()和System.nanoTime()有什么区别

java中System.nanoTime()返回的是纳秒,nanoTime而返回的可能是任意时间,甚至可能是负数……按照API的说明,nanoTime主要的用途是衡量一个时间段,比如说一段代码执行所 用的时间,获取数据库连接所用的时间,网络访问所用的时间等。另外,nanoTime提供了纳秒级别的精度,但实际上获得的值可能没有精确到纳秒。

但总的来说,这两个函数的用途是完全不一样的!

java中System.currentTimeMillis()返回的毫秒,这个毫秒其实就是自1970年1月1日0时起的毫秒数,Date()其实就是相当于Date(System.currentTimeMillis());因为Date类还有构造Date(long date),用来计算long秒与1970年1月1日之间的毫秒差。


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


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() 方法精确一百万倍的精度。即使当今的大多数系统无法提供纳秒精度的时间,但是实际值应当至少比用老的方法获得的要好得多。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值