我正在制作一个代码,我希望我的时间有一定的精确度.我用机器人进行一些操作,然后我用Thread.sleep(some_time)
了some_time
行动之间要经过的.但是我没有得到最好的结果,因为当我搜索它时,sleep
并不准确.实现这一目标的最佳方法是什么?我的意思是Thread.sleep
用其他方法模拟.
现代操作系统的时间安排永远不会精确,除非您使用为此明确设计的语言/框架.但是,在大多数操作系统中,您可以使用合理的不确定性.但"合理"取决于您试图解决的问题.
在Java中,Thread.sleep是一个非常基本的实现,在我看来过于夸张.Java提供这些基本的线程工具并不是因为它们是最佳解决方案,而是因为它们是基本工具.Java还提供了许多其他更复杂的工具,可以更好地满足您的需求.
例如,如果您想要"精确"计时,则可以使用ScheduledExecutorService,它使用OS调度服务提供至少毫秒的精度,甚至通常为纳秒.虽然它不是精确到纳秒(尽管提供),但它通常比Thread.sleep更准确.但是在严重超负荷的系统上,两者都不准确.如果这足以解决您的问题,那么您应该采用这种方法.否则,您需要不同的语言/执行环境.