📜  等价的 setTimeInterval java (1)

📅  最后修改于: 2023-12-03 15:11:31.946000             🧑  作者: Mango

等价的 setTimeInterval Java

在 JavaScript 中,我们可以使用 setInterval 方法来周期性地调用一个函数。但是,在 Java 中,并没有直接等价的方法。在本文中,我们将讨论如何在 Java 中实现类似于 setInterval 的功能。

Java 中的 Timer 类

Java 中有一个 Timer 类,它可以用来在预定的时间段后执行一个任务。我们可以使用 Timer 类来实现类似于 setInterval 的功能。下面是一个简单的示例代码:

import java.util.Timer;
import java.util.TimerTask;

public class MyClass {

  public static void main(String[] args) {

    Timer timer = new Timer();
    timer.schedule(new MyTask(), 0, 1000);

  }

  static class MyTask extends TimerTask {
    public void run() {
      System.out.println("Hello World!");
    }
  }

}

在上面的代码中,我们创建了一个 Timer 对象,并在其中注册了一个 TimerTask,它将在 0 秒后开始执行,并且每隔 1000 毫秒执行一次。在 MyTask 类的 run 方法中,我们打印了一个简单的消息。

如果您需要在 MyTask 类中访问其他类的成员,则需要将 MyTask 类定义为非静态内部类。否则,在实例化 MyTask 对象时,还需要实例化其外部类对象。

Java 中的 ScheduledExecutorService 类

Java 还提供了另一个类 ScheduledExecutorService,它也可以用来执行周期性任务。与 Timer 类不同的是,ScheduledExecutorService 对象不会创建新的线程,而是将执行任务的线程委托给线程池中的现有线程。

下面是一个使用 ScheduledExecutorService 的示例代码:

import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

public class MyClass {

  public static void main(String[] args) {

    ScheduledExecutorService scheduledExecutorService =
        Executors.newScheduledThreadPool(1);

    scheduledExecutorService.scheduleAtFixedRate(
        new MyTask(), 0, 1, TimeUnit.SECONDS);

  }

  static class MyTask implements Runnable {
    public void run() {
      System.out.println("Hello World!");
    }
  }

}

在上面的代码中,我们创建了一个 ScheduledExecutorService 对象,并使用 scheduleAtFixedRate 方法注册了一个 Runnable 任务。任务将在 0 秒后开始执行,并且每秒执行一次。

总结

虽然在 Java 中没有直接等价的方法 setInterval,但是我们可以使用 Timer 类或 ScheduledExecutorService 类来实现类似的功能。在实际应用中,您应该选择适合您需求的类。如果您需要使用线程池,可以使用 ScheduledExecutorService;如果您需要简单地在固定的时间段执行任务,则可以使用 Timer