在指定时间重复循环

Repeat the loop at a specified time

我需要一个在特定时间重复的循环

例如 10 秒 :

while (Repeat every ten seconds)
        {
           // Code body
        }

要将代码执行暂停到 java 循环中,您可以使用 Thread.sleep(Integer) 方法,这将在指定的毫秒数内停止线程的执行。 Here 有一个带有 for 循环的官方示例。在您的情况下,您可以这样做:

while (true) {
  /* your code here */
  Thread.sleep(10000);
}

while 循环的主体将每 10 秒执行一次。

严格来说,你不能那样做。你可以做一个循环来做类似

的事情
while(true){
   ... do your sheet ...
   Thread.sleep(10_000);
   }

但不会精确到每 10 秒一次。

不过,这个解决方案可能适合您。

您需要考虑的是:

  • 如果 do your sheet 运行 9 秒会怎样?你应该再等 10 秒还是只等剩下的 1 秒?

  • 如果操作超过 10 秒会怎样?你应该立即重复还是在动作开始后 10 秒重复?程序是否应该在不同的线程中再次开始操作?程序应该启动多少个线程?

此外,不能保证 Thread.sleep(10_000) 会暂停当前线程的执行恰好 10 秒。由于interrupt/signal,它可能会更快地从睡眠中恢复过来。此外,线程可能稍后会从睡眠中恢复,因为在 10 秒过去后没有可用资源来执行线程。

对于简单的练习,while 循环和 sleep() 都可以。如果您以后需要更专业的东西,那么您可以阅读文档,并考虑使用 Quartz。