因为我每秒都在执行时间关键型任务,所以我比较了几种方法来找到确保我的任务在固定时间步骤中真正执行的最佳方法。在计算所有方法的误差标准推导之后,似乎使用方法scheduledExecutorService.scheduleAtFixedRate()
可以获得最佳结果,但我不知道为什么会这样。方法scheduledExecutorService.scheduleAtFixedRate()如何确保实时执行?
有没有人知道该方法内部工作?例如,与简单的sleep()
相比,它如何确保引用的任务在固定的时间步骤中真正执行?
因为这个类经常在内部使用其他类,所以我很难遵循它。但我认为这可能是相关的: 我发现任务被放入一个PriorityQueue中,它可能按优先级排序任务,这意味着它们的预期执行时间。因此,似乎确实没有实时保证。 但为什么这种方法比睡眠(速度)更好?也许这个队列能够以比例如垃圾收集器更高的优先级运行线程,以便能够近乎实时地执行任务? – Markus 2009-10-03 15:10:01
你的意思是“据我所知没有任何保证”? – 2012-01-16 22:00:42