以固定速率调用线程的run()方法的正确方法是什么?
我应该实施Runnable并使用Thread#sleep()与基于System#nanoTime()的数学并行,还是应该延伸Thread并使用ScheduledExecutorService?
我希望无论处理时间如何,每个#ms都要执行这个逻辑,例如:
Loop takes 32ms
Thread waits 228ms (250-32) then executes loop again.
Loop takes 17ms
Thread waits 233ms (250-17) then executes loop again.
这意味着仅使用Thread#sleep()
本身就不是一个合适的解决方案,我知道通过使用start / end / elapsed来计算sleep()的毫秒数,我可以非常接近这个效果变量并使用nanoTime()作为参考,但这是"正确"这样做的方法?