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

我有这个问题。

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

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

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

谢谢

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

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

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

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

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

您可以使用任何调度程序。

例如QUARTZ是一个很好的。

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

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

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

 Thread.currentThread().yield(); 

对于每次迭代,可能是确保其他线程有机会执行的最简单方法。