我有这个问题。
如果可能的话,我需要无休止地重复一个方法,但不要使系统过载。
据我了解,虽然(true){... code ...}会挂起系统。
您建议我使用什么不会挂起系统?
由于
此外: 我的方法的执行可能需要5分钟,或50毫秒,我希望方法在完成时重复jsut
答案 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();
每次迭代的可能是确保其他线程有机会执行的最简单方法。