Java:以指定的时间间隔执行方法

时间:2009-12-29 04:06:30

标签: java

我有这个问题。

如果可能的话,我需要无休止地重复一个方法,但不要使系统过载。

据我了解,虽然(true){... code ...}会挂起系统。

您建议我使用什么不会挂起系统?

由于

此外: 我的方法的执行可能需要5分钟,或50毫秒,我希望方法在完成时重复jsut

4 个答案:

答案 0 :(得分:3)

查看Timer和TimerTask。它们正是您所需要的。

编辑: 仍然是你需要的。看看API的

答案 1 :(得分:1)

您可以使用任何计划程序。

e.g。 QUARTZ是一个很好的。

答案 2 :(得分:1)

您可以启动一个新线程并在后台运行该任务。有关详细信息,请参阅Java concurrency教程。

如果您只想一次为此任务运行1个线程,则可以使用single thread executor执行此操作。

答案 3 :(得分:0)

如果您希望在第一个完成后立即开始重复,并且在同一个线程上执行,则不需要调度程序。 “while(true)”正是这样做的方法,如果这实际上是你想要的。

您对“挂起系统”的担忧表明,在程序中的其他线程上发生了其他事情,您希望允许这种情况发生,或者您希望此序列在某些您没有的条件下结束指定。

在第二种情况下,您需要在while循环中测试终止条件,而不是“while true”(或使用“break”)。在第一种情况下,您需要确保其他线程可以访问CPU。调用

Thread.currentThread().yield();
每次迭代的

可能是确保其他线程有机会执行的最简单方法。