Exemplo ou explicação usando Timer e TimerTask

e ae galera queria algum exemplo ou explicação de como usa a classe Timer.
(do pacote java.util).

Por exemplo, eu tenho que pegar os dados do banco de dados a cada 5 minutos. Se os 5 minutos já passaram, eu pego os dados do BD e jogo em alguma variável da minha classe, como se fosse um cache ou algo assim.
Se não tiver passado o tempo, eu só retorno o valor da cache.

Se a sua classe não precisa notificar ninguém a cada cinco minutos como um marcapasso, então no método que realiza o restore do dados você faz a verificação…

if( (System.currentTimeMillis() - ultimaAtualizacao) > 5 * 60 * 1000 ) { // busca do banco } else { // busca do cache }

mas se realmente quer usar Time então veja este post:

http://www.guj.com.br/posts/list/40535.java#216209

fw

resolvi usando Timer mesmo.
Vou postar o código

public static final long TEMPO = ( 3000 * 60 ); //atualiza o site a cada 3 minutos

   Timer timer = null;
   List<Produto> cache = null;
   
   public ProdutosMaisVendidosFilter() {
      if( ( timer == null ) || (cache == null) ) {
         timer = new Timer();
         TimerTask tarefa = new TimerTask() {
            public void run() {
               try {
                  ProdutoDAO produtodao = new ProdutoDAO();
                  cache = produtodao.maisVendidos();
               }
               catch(HibernateException e){
                  e.printStackTrace();
               }
               
            }
         };
         timer.scheduleAtFixedRate(tarefa, TEMPO, TEMPO); 
      }
   }

Estou fazendo algo parecido com o que você fez…

porem, quando tento algo do tipo:

ProdutoDAO produtodao = new ProdutoDAO();

da problema, pois a classe que estou tentando usar não está na pasta Main e sim na Hot.
na hora de tentar dar o deploy, ele diz que o pacote onde ta a classe n existe

e agora?

Queria saber se algum de vcs poderiam me ajudar a explicar o que é essa classe timer, quais as vantagens, desvantagens, características e o conceito, no java.