Java中的Thread.sleep()方法的精度是有一定的限制的,不能保证实际暂停的时间与设定的时间完全一致。Thread.sleep()方法用于使当前线程暂停执行一段时间,受到操作系统调度器的影响,以及系统的定时器分辨率限制。很多平台上(如Windows),操作系统的定时器分辨率通常是15.6毫秒(ms),因此即使你调用Thread.sleep(1),实际上可能会暂停15.6毫秒或更多的时间。
如果你想实现相对精准的计时可以使用System.nanoTime()方法来实现自定义的精确等待逻辑(线程不堵塞while循环读),或者 依赖SDK Rxjava 定时器来进行处理。