为什么Thread.sleep(1000);时间不对

yjsl__ 2023-08-02 18:55:40

 

 

...全文
959 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jayce_he 2023-08-03
  • 打赏
  • 举报
回复

Java中的Thread.sleep()方法的精度是有一定的限制的,不能保证实际暂停的时间与设定的时间完全一致。
Thread.sleep()方法用于使当前线程暂停执行一段时间,受到操作系统调度器的影响,以及系统的定时器分辨率限制。很多平台上(如Windows),操作系统的定时器分辨率通常是15.6毫秒(ms),因此即使你调用Thread.sleep(1),实际上可能会暂停15.6毫秒或更多的时间。

如果你想实现相对精准的计时可以使用System.nanoTime()方法来实现自定义的精确等待逻辑(线程不堵塞while循环读),或者 依赖SDK Rxjava 定时器来进行处理。

老王就是我 2023-08-25
  • 举报
回复
@Jayce_he 盲猜,他是要每隔一秒打印。nanotime只能获取到时间,并不能暂停。如果加上判断,判断本身也是需要时间的,所以。。。

51,411

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧