Java ScheduledExecutorService和使用Thread.sleep()滚动您自己的Runnable之间的区别
使用的定期运行一段代码,而不是创建一个新的永久循环,再加上一个导致线程在所需时间内休眠的循环,有什么好处Java ScheduledExecutorService和使用Thread.sleep()滚动您自己的Runnable之间的区别,java,multithreading,scheduled-tasks,scheduledexecutorservice,Java,Multithreading,Scheduled Tasks,Scheduledexecutorservice,使用的定期运行一段代码,而不是创建一个新的永久循环,再加上一个导致线程在所需时间内休眠的循环,有什么好处 使用其中一种方法是否会提高性能?使用ScheduledExecutorService的最大好处是不需要编写代码,而且经过了良好的测试。它还支持取消开箱即用的任务,并且您可以安排多个任务 另一个好处是,其他开发人员知道ScheduledExecutorService的功能,他们可以阅读javadoc,可以在论坛上提问并获得帮助,而定制代码则更难获得帮助 javadoc for还提供了一个很好的
使用其中一种方法是否会提高性能?使用
ScheduledExecutorService
的最大好处是不需要编写代码,而且经过了良好的测试。它还支持取消开箱即用的任务,并且您可以安排多个任务
另一个好处是,其他开发人员知道ScheduledExecutorService的功能,他们可以阅读javadoc,可以在论坛上提问并获得帮助,而定制代码则更难获得帮助
javadoc for还提供了一个很好的示例,说明了如何创建一个任务,该任务在一小时内每10秒执行一次,然后被取消 注意@dlev的警告:由于任务持续时间过长和/或线程不足,任务不能保证以精确的时间间隔运行。您可能还希望库类能够处理时钟时间更改时可能发生的复杂情况。它是否真的这样做是另一回事;-)没错,但在未来的许多年里,我们可能不得不忍受这一缺陷:(