我想在run方法中创建10个Timer.scheduler,所以我用于循环,但它只执行一次。不要在这个循环中重复调用调度程序。
请检查下面的代码,
public void run()
{
for(int i=0;i<10;i++)
{
timer.schedule(task, 10000);
}
}
在这段代码中,我使用for for循环创建了10个调度程序,但它只执行了一次。以及如何区分每个Scheduler
请帮助我,
答案 0 :(得分:0)
假设您正在使用java.util.Timer,那么可能它只运行一次任务的原因是因为java.util.TimerTask只能安排一次。此代码将运行第一个计划任务,但在此之后将失败并显示java.lang.IllegalStateException: Task already scheduled or cancelled
。
要区分每个计划任务,您可以执行以下操作。每个预定的NamedTimerTask都有自己的名称。您可以选择对其进行修改,以添加识别计划任务所需的任何内容。
public static void main(String[] args) {
Timer timer = new Timer();
for (int i = 0; i < 10; i++) {
timer.schedule(new NamedTimerTask("task" + i) {
@Override
public void run() {
System.out.println(name);
}
}, 1000);
}
}
static abstract class NamedTimerTask extends TimerTask {
final String name;
NamedTimerTask(String name) {
this.name = name;
}
}