ScheduledExecutorService与使用Thread.sleep()滚动自己的Runnable之间的区别

A T*_*mes 3 java multithreading scheduled-tasks scheduledexecutorservice

使用ScheduledExecutorService's scheduleAtFixedRate()定期运行一段代码而不是创建一个Runnable具有永久循环Thread.sleep()并且导致线程在所需时段内睡眠的新代码有什么好处?

使用其中一种方法可以获得性能提升吗?

Kaj*_*Kaj 8

使用的最大好处ScheduledExecutorService是您不需要编写代码,并且它已经过充分测试.它还支持取消开箱即用的任务,您可以安排多个任务.

另一个好处是,其他开发人员知道它的ScheduledExecutorService作用,他们可以阅读javadoc,他们可以在puplic论坛上提出有关它的问题,并获得帮助,同时更难获得自定义代码的帮助.

ScheduledExecutorService的javadoc 也有一个很好的例子,说明如何创建一个小时每10秒执行一次的任务,然后取消.