Example: Timer timer = new Timer(); TimerTask task = new TimerTask() { public void run() { if (this.scheduledExecutionTime() < System.currentTimeMillis() + 500) // Do something else // Complain: We are more then half a second late! if (someStopCondition) this.cancel(); // This was our last execution }; timer.scheduleAtFixedRate(task, 1000, 1000); // schedule every second

Note that a TimerTask object is a one shot object and can only given once to a Timer. (The Timer will use the TimerTask object for bookkeeping, in this implementation).

This class also implements Runnable to make it possible to give a TimerTask directly as a target to a Thread. ]]> A task that has been canceled can never be scheduled again.

In this implementation the TimerTask it is possible that the Timer does keep a reference to the TimerTask until the first time the TimerTask is actually scheduled. ]]> A task that has been canceled can never be scheduled again.

In this implementation the TimerTask it is possible that the Timer does keep a reference to the TimerTask until the first time the TimerTask is actually scheduled. ]]> Can be used (when the task is scheduled at fixed rate) to see the difference between the requested schedule time and the actual time that can be found with System.currentTimeMillis(). ]]>