Java 如何按间隔执行某些任务(任务计划)

Java 如何按间隔执行某些任务(任务计划),java,Java,我有一些类型的任务,比如在一个循环中,使用相同的方法但参数不同, 我需要每隔一段时间一个接一个地执行这些任务, 所有这些活动都需要在一个特定的时间表中一次又一次地执行, e、 假设我有一个叫做 public void GetData(String tablename){ } 所以第一次我将提供表1,然后是表2,然后是表3。。。。。 类似于for循环,但需要一些间隔 最重要的是,每10分钟执行一次 示例代码我已经实现为 final ScheduledExecutorService schedul

我有一些类型的任务,比如在一个循环中,使用相同的方法但参数不同, 我需要每隔一段时间一个接一个地执行这些任务, 所有这些活动都需要在一个特定的时间表中一次又一次地执行, e、 假设我有一个叫做

public void GetData(String tablename){
}
所以第一次我将提供表1,然后是表2,然后是表3。。。。。 类似于for循环,但需要一些间隔


最重要的是,每10分钟执行一次

示例代码我已经实现为

final ScheduledExecutorService scheduler =
                Executors.newScheduledThreadPool(1);
final Runnable runner = new Runnable() {
                  public void run() { 
                      getData(String table);
                      }
                };
                final ScheduledFuture<?> taskHandle =
                  scheduler.scheduleAtFixedRate(runner, 1, 10, SECONDS);
final ScheduledExecutorService调度器=
Executors.newScheduledThreadPool(1);
最终Runnable runner=新Runnable(){
public void run(){
getData(字符串表);
}
};
最终计划的未来任务句柄=
scheduleAtFixedRate(runner,1,10,秒);

对于需要帮助的一个表来说,它工作得很好,是实现多个表的最佳方式。

tryjava.util.Timer来安排要执行的任务

        public class ReminderBeep {
              Toolkit toolkit;

              Timer timer;

              public ReminderBeep(int seconds) {
                toolkit = Toolkit.getDefaultToolkit();
                timer = new Timer();
                timer.schedule(new RemindTask(), seconds * 1000);
              }

              class RemindTask extends TimerTask {
                public void run() {
                  System.out.println("Time's up!");
          toolkit.beep();
          //timer.cancel(); //Not necessary because we call System.exit
          System.exit(0); //Stops the AWT thread (and everything else)
            }
          }

          public static void main(String args[]) {
            System.out.println("About to schedule task.");
        new ReminderBeep(5);
        System.out.println("Task scheduled.");
          }
        }

您可以在循环中使用Thread.sleep()(如果它不在主线程上)。类似这样的情况(代码未经测试,因此可能包含错误):

ExecutorService ExecutorService=Executors.newFixedThreadPool(4);
对于(int i=0;i<10;i++){
executorService.execute(新的Runnable(){
公开募捐{
getData(字符串表);
}
睡眠(10000);
}

“所有执行都需要每10分钟执行一次”和“scheduleAtFixedRate(runner,1,10,s);”是否不起作用?
ExecutorService executorService = Executors.newFixedThreadPool(4);
for (int i = 0; i < 10; i++) {
     executorService.execute(new Runnable() {
     public void run() {
         getData(String table);
     }
     Thread.sleep(10000);
}