Timer
Links
Stopping Timer Threads
By default, a program keeps running as long as its timer threads are running. You can terminate a timer thread in four ways:
- Invoke cancel on the timer. You can do this from anywhere in the program, such as from a timer task’s run method. 
- Make the timer’s thread a “daemon” by creating the timer like this: - new Timer(true). If the only threads left in the program are daemon threads, the program exits.
- After all the timer’s scheduled tasks have finished executing, remove all references to the - Timerobject. Eventually, the timer’s thread will terminate.
- Invoke the - System.exitmethod, which makes the entire program (and all its threads) exit.
Sample
Standard Repeat
A Maven 2 project can be checked out from Subversion on:
http://g1/svn/home/patrick/learn/timer-example/
package com.mycompany.example;
import java.util.Timer;
import java.util.TimerTask;
public final class TimerExample extends TimerTask {
    /** Number of millseconds - 5 seconds. */
    private static final long DELAY_IN_MILLISECONDS = 5000;
    /** Timer to make sure all errors are reported. */
    private Timer timer = null;
    /** Create the timer - which will make repeated calls to run(). */
    public void createTimer() {
        if (timer == null) {
            timer = new Timer(true);
            timer.scheduleAtFixedRate(this, DELAY_IN_MILLISECONDS, DELAY_IN_MILLISECONDS);
        }
    }
    /** This function will be called by the timer object at the specified interval */
    public void run() {
        System.out.println("run()");
    }
}
The associated unit test:
package com.mycompany.example;
import junit.framework.TestCase;
public class TimerExampleTest extends TestCase {
    public void testTimer() throws InterruptedException {
        TimerExample timer = new TimerExample();
        timer.createTimer();
        Thread.sleep(30000);
    }
}
Simple Repeat
Scheduling a Timer Task to Run Repeatedly
int delay = 5000;   // delay for 5 sec.
int period = 1000;  // repeat every sec.
Timer timer = new Timer(true);
timer.scheduleAtFixedRate(new TimerTask() {
        public void run() {
            // Task here ...
        }
    }, delay, period);
Specific Time
Scheduling a Timer Task to Run at a Certain Time
int numberOfMillisecondsInTheFuture = 10000; // 10 sec
Date timeToRun = new Date(System.currentTimeMillis() + numberOfMillisecondsInTheFuture);
Timer timer = new Timer(true);
timer.schedule(new TimerTask() {
        public void run() {
            // Task here ...
        }
    }, timeToRun)