我在我的应用程序中使用system.nanoTime,并且我计算相对于开始时间的时间。
我的应用程序运行得很好,直到我把它复制到一台新电脑上,在它上面,nano时间给我提供了较慢的数值。
我写了一个简单的应用程序只是为了确保。
将纳米时间与系统时间进行比较。
它在除我的新计算机之外的其他计算机上显示相同的值。有什么建议吗?
这是我的代码:首先我有
private long initNanoTime = System.nanoTime();
private long initTime = System.currentTimeMillis();然后我循环一个每秒运行的线程:
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时间打印到日志
发布于 2012-04-05 18:28:16
它就像Java API文档中提到的System.nanoTime()一样
此方法只能用于测量经过的时间,与系统或挂钟时间的任何其他概念无关。返回的值表示从某个固定但任意的起始时间开始的纳秒(可能是在将来,因此值可能是负数)。Java虚拟机实例中此方法的所有调用都使用相同的源;其他虚拟机实例可能使用不同的源。
此方法提供纳秒精度,但不一定是纳秒分辨率(即,值更改的频率)-除了分辨率至少与currentTimeMillis()一样好之外,没有任何保证。
它不提供与时间戳(currentTimeMillis)的任何耦合,也不提供固定的分辨率。
在您的例子中,Java现在似乎有一个比以前更高精度的计时器,因此不需要使用系统时间。
https://stackoverflow.com/questions/10026812
复制相似问题