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

Java:在指定的时间间隔执行方法,java,Java,我有这个问题 如果可能的话,我需要一个方法无休止地重复,但不会使系统过载 据我所知,当真的{…代码…}将挂起系统时 你建议我用什么不会挂断系统 谢谢 此外: “我的方法”的执行可能需要5分钟或50毫秒,我希望该方法重复执行,但当它完成时,您可以使用任何计划程序 e、 石英是一个很好的选择。看看定时器和定时器任务。它们正是你所需要的 编辑: 还是你需要的。查看API的,您可以启动一个新线程并在后台运行该任务。有关更多信息,请参见教程 如果您一次只想为此任务运行一个线程,那么可以使用调度程序来执行。

我有这个问题

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

据我所知,当真的{…代码…}将挂起系统时

你建议我用什么不会挂断系统

谢谢

此外:
“我的方法”的执行可能需要5分钟或50毫秒,我希望该方法重复执行,但当它完成时,您可以使用任何计划程序


e、 石英是一个很好的选择。

看看定时器和定时器任务。它们正是你所需要的

编辑:
还是你需要的。查看API的

,您可以启动一个新线程并在后台运行该任务。有关更多信息,请参见教程


如果您一次只想为此任务运行一个线程,那么可以使用调度程序来执行。

如果您希望在第一次重复完成后立即开始新的重复,并在同一个线程上执行,则不需要调度程序。如果这是你真正想要的,那么“真”就是实现这一点的方法

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

在第二种情况下,您需要在while循环中测试终止条件,而不是while true或使用break。在第一种情况下,您需要确保其他线程能够访问CPU。召唤

Thread.currentThread().yield();

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

但是当一个timertask未完成时,它似乎会创建一个新线程,例如,完成大约需要5分钟。我不希望它创建一个新线程,我只希望它在方法完成时这样做。我恐怕你没有太多的选择。如果还有别的办法,我很想听。最好有一个单独的计时器调度线程来满足您的所有需求,而不是在一个单独的线程上运行您的任务,以尽量减少线程的数量。我可以启动一个新线程,同时使用{…}内部代码,这不会影响主程序,不会挂起它吗?是的,它不会挂起它-新线程与主线程同时运行。你启动新线程,它会一直运行直到它自己完成,或者直到你的主线程停止它。我应该为它启动什么样的线程?请给我看一小段代码好吗?本页包含一个使用单线程执行器每10秒发出一个小时的嘟嘟声的代码示例:在该示例中,最后一个可运行的嘟嘟声将替换为您编写的类。它需要实现Runnable,并有一个公共的void run方法来执行计划的方法。当一个Runnable未完成时,计划似乎会创建一个新线程,例如,完成大约需要5分钟。我不希望它创建一个新线程,我只希望它在方法完成时这样做,然后我猜Executor就是您要寻找的类。您可以创建一个线程池。指定总线程数等于1,您将得到所需的线程数。Executors是类。我错过了那边的电话。