在多线程代码中,每当线程被重新安排时,System.nanoTime()会产生小的不准确性吗? 如果是,这个错误会累积,在单线程代码中也是如此吗?
例如,当线程开始执行时,它会在开始时使用System.nanoTime()获取时间,然后在从线程块退出之前使用相同的System.nanoTime()
记录时间。答案 0 :(得分:1)
“小不准确”是什么意思?虽然System.nanoTime()
为您提供纳秒分辨率,但无法保证其测量的经过时间的准确性。据我所知,调用System.nanoTime()
不会破坏线程调度;方法调用和执行的成本很低,但就是这样。 (当然,如果你做了足够多的话,做很多这些调用会累积大量的CPU时间。)