Agendar Tarefa!

Estou usando a classe Timer e TimerTask para agendar uma tarefa.

No código abaixo ele realiza uma tarefa numa determinada hora, mas eu quero que ele execute uma tarefa de hora em hora durante 24 horas.

Como eu faço isso, estou tendo dificuldade p/ implementar isso!
Alguem pode me ajudar!

[code]import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;

public class AgendarHoraI {
Timer timer;

public AgendarHoraI() {
	Calendar calendar = Calendar.getInstance();
    calendar.set(Calendar.HOUR_OF_DAY, 15);  
    calendar.set(Calendar.MINUTE, 9);
    calendar.set(Calendar.SECOND, 0);
    Date time = calendar.getTime();

    //HORA DE EXECUÇÃO : 15:42:00
    
    timer = new Timer();
    timer.schedule(new RemindTask(), time);
    System.out.println("Esperando a hora de execução da tarefa");
}

class RemindTask extends TimerTask {
	
    public void run() {
        System.out.println("Executando...");
        timer.cancel(); //Fecha a thread timer
    }
}

public static void main(String args[]) {
    new AgendarHoraI();
}

}[/code]

Podes usar o Quartz pra agendar tarefas. T+

Tenta este esquema:

public class Task extends Thread {
    private Job job;

    public Task(final Job job) {
        this.job = job;
    }

    private synchronized void exec() {
        try {
            while (job.shouldRun()) {
                 job.execute();
                 job.sleep();
            }
        } catch (Exception e) { /*TODO*/ }
    }

    public void run() {
        exec();
    }
}

Pra executar:

Job job = new MyJob(10, 18000); //10X a cada 5H
Thread t = new Task(job); 
t.start();

Job tu podes definir como uma classe abstrata que terás de implementar de acordo com o que queres executar:

public abstract class Job {
    private int time;
    private long waitTime;

    public Job(final int time, final long waitTime) {
        this.time = time;
        this.waitTime = waitTime;
    }

    protected abstract boolean shouldRun();

    protected abstract void execute();

    protected abstract void sleep();
}

Mais ou menos isto… Tavez alguns ajustes em Job, T+

Rapaz esta dando erro aqui:

new MyJob

Que classe e essa MyJob?

eh classe do quartz

http://www.opensymphony.com/quartz/

usa ele q eh esquema…tem bastante material sobre como utiliza-lo por aih…