如何在间隔中执行某些任务(任务调度程序)

时间:2015-01-06 08:43:38

标签: java

我有一些类型的任务,例如在循环中使用相同的方法但参数不同, 我需要在一些时间间隔内一个接一个地执行这些任务, 并且所有这些活动都需要在特定的时间表中一次又一次地执行, 例如假设我有一个名为

的方法
public void GetData(String tablename){
}

所以我第一次提供table1然后table2然后table3 ..... 类似于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);

它适用于一个表,需要帮助和实现多个表的最佳方法。

2 个答案:

答案 0 :(得分:0)

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.");
          }
        }

答案 1 :(得分:0)

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

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);
}