1

嗨,我使用以下计时器任务,我想在发生某种情况时增加此任务的时间

Timer timer2=new Timer();                   
                timer2.schedule(new TimerTask(){
                    public void run(){

                        //whatevr
                    }
                }, 4000);

例子

if(mycondition)

{
increase time????
}

我怎样才能做到这一点

4

3 回答 3

4

TimerTask在内部或独立类中提取。取消当前正在运行的计时器任务并安排一个增加时间段的新实例。

于 2011-07-20T12:48:25.670 回答
3

你不能。您必须安排一个具有递增周期的新任务。如果之前的任务已经过时,请确保你完成cancel()了它。


为了将来参考,我建议您使用该Executors框架。

于 2011-07-20T12:49:24.267 回答
0

如有必要,从 run() 提交另一项任务:

import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;



public class TimerTaskTest {

private static class MyTimerTask extends TimerTask {
    private final Timer timer;
    private boolean fire;

    private MyTimerTask(Timer timer) {
        this(timer, false);
    }

    private MyTimerTask(Timer timer, boolean fire) {
        this.timer = timer;
        this.fire = fire;
    }

    @Override
    public void run() {
        if (!fire) {
            System.out.println(new Date() + " - steady...");
            timer.schedule(new MyTimerTask(timer, true), 2000);
        } else {
            System.out.println(new Date() + " - go!");
        }
    }
}

public static void main(String args[]) {
    Timer timer = new Timer(true);
    MyTimerTask timerTask = new MyTimerTask(timer);

    System.out.println(new Date() + " - ready...");
    timer.schedule(timerTask, 4000);

    try {
        Thread.sleep(7000);
    } catch (Exception ignore) {
    }
}

}
于 2011-07-20T13:01:40.000 回答