2011-07-20 28 views

回答

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

}