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() から別の 1 つのタスクを送信します。

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 に答える