Executar um metodo de tempo em tempo TimerTask

Olá, gostaria de criar um agendador que executasse meu método de tempo em tempo, sei que o quartz faz esse trabalho, mas pesquisei sobre o TimerTask, alguém tem um exemplo simples:

public void run() {
       if (System.currentTimeMillis() - scheduledExecutionTime() >=  MAX_TARDINESS)
               return;  // Too late; skip this execution.
       // Perform the task
}

Consegui:

import java.util.Timer;
import java.util.TimerTask;

public class MyTimer {
	public static final long TEMPO = (1000 * 60); // atualiza o site a cada 1 minuto

	
	public static void main(String[] args) {
		System.out.println("inicio");
		Timer timer = null;
		if (timer == null) {
			timer = new Timer();
			TimerTask tarefa = new TimerTask() {
				public void run() {
					try {
						System.out.println("Teste agendador");
						//chamar metodo
					} catch (Exception e) {
						e.printStackTrace();
					}
				}
			};
			timer.scheduleAtFixedRate(tarefa, TEMPO, TEMPO);
		}
	}
}

vc pode usar threads.

http://www.ucb.br/prg/professores/giovanni/disciplinas/2004-1/pc/material/giovanni/threads.html

Onde deve ser colocada essa classe?

Eu fiz como vc mencionou que conseguiu, mas o site (no caso uma atualização no banco) não é realizada

   package com.mydomain.sgs;

   import java.util.Timer;
   import java.util.TimerTask;
   import org.jboss.seam.annotations.In;


   public class MyTimer {
       public static final long TEMPO = (1000 * 60); // atualiza o site a cada 1 minuto

       public static void main(String[] args) {
           System.out.println("inicio");
           Timer timer = null;
           if (timer == null) {
               timer = new Timer();
               TimerTask tarefa = new TimerTask() {
                   @In(create=true)
                   NotasList notasList;
                   @In(create=true)
                   InutilList inutilList;
                   public void run() {
                       try {
                          for(int k=0;k<inutilList.getResultList().size();k++){
                            for(int i=0;i<notasList.getResultList().size();i++){
                                if(notasList.getResultList().get(i).getNumNf()==inutilList.getResultList().get(k).getNumNf()){
                                notasList.getResultList().get(i).setStatusSefaz(true);
                                }
                            }
                          }
                       } catch (Exception e) {
                           e.printStackTrace();
                       }
                   }
               };
               timer.scheduleAtFixedRate(tarefa, TEMPO, TEMPO);
           }
       }
   }

é preciso fazer a chamada do metodo run? ou a implementação efetua automaticamente a cada 1 minuto?

A cada um minuto ele roda sozinho conforme o exemplo.

então ele simplesmente n ta rodando…

onde ele deveria fazer

notasList.getResultList().get(i).setStatusSefaz(true); 

“setando” o StatusSefaz = true não acontece.

o que pode ser?

a classe ta dentro do projeto .war

Eu geralmente confio mais no gerador de “clock” com oscilador de cristal dos computadores do que nas classes “timer” do Java para fazer esse tipo de tarefa. Um “Thread.sleep(int milissegundos)” conseguia resolver meu problema de executar uma tarefa em intervalos regulares. Tenho más experiências com as classes “timer” porque a máquina onde meu código rodava era um cliente de um servidor NTP meio doido, o que provavelmente fazia as classes “timer” se perderem completamente…

Inté.