我有一些类型的任务,例如在循环中使用相同的方法但参数不同, 我需要在一些时间间隔内一个接一个地执行这些任务, 并且所有这些活动都需要在特定的时间表中一次又一次地执行, 例如假设我有一个名为
的方法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);
它适用于一个表,需要帮助和实现多个表的最佳方法。
答案 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);
}