Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ScheduledExecutorService和使用Thread.sleep()滚动您自己的Runnable之间的区别_Java_Multithreading_Scheduled Tasks_Scheduledexecutorservice - Fatal编程技术网

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的警告:由于任务持续时间过长和/或线程不足,任务不能保证以精确的时间间隔运行。您可能还希望库类能够处理时钟时间更改时可能发生的复杂情况。它是否真的这样做是另一回事;-)没错,但在未来的许多年里,我们可能不得不忍受这一缺陷:(