如何在run方法中创建timer.scheduler的数量

时间:2014-06-11 13:38:02

标签: java multithreading

我想在run方法中创建10个Timer.scheduler,所以我用于循环,但它只执行一次。不要在这个循环中重复调用调度程序。

请检查下面的代码,

public void run()
    {
    for(int i=0;i<10;i++)
     {
       timer.schedule(task, 10000);
     }
    }

在这段代码中,我使用for for循环创建了10个调度程序,但它只执行了一次。以及如何区分每个Scheduler

请帮助我,

1 个答案:

答案 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;
    }
}