2011-07-20 15 views
1

こんにちはメートル以下タイマータスクを使用して、と私は、特定の条件が発生した場合、このタスクの時間を増やしたいjava TimerTask増加時間ですか?

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

         //whatevr 
        } 
       }, 4000); 

examlpe

if(mycondition) 

{ 
increase time???? 
} 

私が行うことができますどのように

答えて

4

エキス内部クラスまたはスタンドアロンクラスのTimerTask現在実行中のタイマータスクをキャンセルし、新しいインスタンスのスケジュールを増やします。

3

できません。増分された期間で新しいタスクをスケジュールする必要があります。また、前のタスクが廃止された場合は、cancel()であることを確認してください。


今後参考になるように、私はExecutorsフレームワークを利用することをお勧めします。

0

実行から別のタスクを提出()必要に応じて:

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) { 
    } 
} 

} 
関連する問題