首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java - system.nanoTime()运行太慢

java - system.nanoTime()运行太慢
EN

Stack Overflow用户
提问于 2012-04-05 18:23:08
回答 1查看 1.6K关注 0票数 0

我在我的应用程序中使用system.nanoTime,并且我计算相对于开始时间的时间。

我的应用程序运行得很好,直到我把它复制到一台新电脑上,在它上面,nano时间给我提供了较慢的数值。

我写了一个简单的应用程序只是为了确保。

将纳米时间与系统时间进行比较。

它在除我的新计算机之外的其他计算机上显示相同的值。有什么建议吗?

这是我的代码:首先我有

代码语言:javascript
复制
private long initNanoTime = System.nanoTime();
private long initTime = System.currentTimeMillis();

然后我循环一个每秒运行的线程:

代码语言:javascript
复制
long timeUsingNanoTime = initTime + (System.nanoTime() - initNanoTime) / 1000000;
long timeUsingMilis = System.currentTimeMillis();
long nanotimeOffset = Math.abs(timeUsingNanoTime - timeUsingMilis);
if (nanotimeOffset < 100l) ? print("close") : print(far);

编辑:我使用nano,因为我需要处理甚至在nano时间中发生的t,并将接收到它的nano时间打印到日志

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-05 18:28:16

它就像Java API文档中提到的System.nanoTime()一样

此方法只能用于测量经过的时间,与系统或挂钟时间的任何其他概念无关。返回的值表示从某个固定但任意的起始时间开始的纳秒(可能是在将来,因此值可能是负数)。Java虚拟机实例中此方法的所有调用都使用相同的源;其他虚拟机实例可能使用不同的源。

此方法提供纳秒精度,但不一定是纳秒分辨率(即,值更改的频率)-除了分辨率至少与currentTimeMillis()一样好之外,没有任何保证。

它不提供与时间戳(currentTimeMillis)的任何耦合,也不提供固定的分辨率。

在您的例子中,Java现在似乎有一个比以前更高精度的计时器,因此不需要使用系统时间。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10026812

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档