慎用System.nanoTime()

775 阅读1分钟

前段时间,线上版本出了个故障,起因是错误理解使用System.nanoTime()导致数据异常,无法存入数据库。

在国产凌凌漆中,周星驰介绍了一把枪:除了向后射,还会向前射,一前一后,让人摸不着头脑。

事实上System.nanoTime()对于开发者就是这般的存在。

  • System.nanoTime()是基于cpu核心的时钟周期来计时,它的开始时间是不确定的。
  • 在多核处理器上,由于每个核心的开始时间不确定,同一段代码可能被不同核调用而产生完全不同的结果。

详情: