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