Duvidas sobre timer task

Beleza galera?
Eu estou usando timertask para agendar tarefas.
Alguém sabe como fazer pra identificar se uma determinada tarefa já foi agendada? Se sim, alguém pode me dar um exemplo? Alguém sabe uma forma de matar todas as taregas agendas?

Até mais!

Opa, eu já usei essa classe, na verdade tive que fazer a identificação da tarefa também. A solução foi implementar o método equals e hashCode no meu caso na classe que extendia timertask. Não entendi o que você quiz dizer por “cacelar todos” um timertaks carrega apena 1 tarefa, se vocÊ tem vários timertask, você vai ter que fazer um loop qualquer no collection ou array que voce os está armazenando, e usar o cancel em cada 1 deles

Beleza?

É que no caso eu tenho a linha:

 timer.schedule(cargaProvedorSchedule, calendario.getTime()); 

e se eu tiver um novo task irei usar a mesma instancia de timer paqra agenda-lo.
A pergunta é, como descobrir se um task já está agendado? É que no javadoc da api não vi nenhum método que cancele um task especifico mesmo porque, não sei como ele é identificado no java
VAleu pela força!

Samurai essa variável “timer” não é do tipo TimerTask, certo? Esse Timer por acaso é uma classe que você criou, que dentro dela tem algum collection? Ou qual o tipo dessa classe, porque o método schedule, não existem em TimerTask…

Se você estiver usando a classe Timer, ai sim :wink:

No meu código eu tenho uma hashtable que eu armazeno todos os Timer, você tem 1 Timer por TimerTask. Quando quero remover um Timer eu pego o objeto no meu hash, atravez da minha chave e cancelo ele. Só lembra de apontar esse Timer pra null depois de cancelar, pra não dar problema no teu hash

  Timer t = (Timer) myHash.get(MyTimerID);
  if ( t != null ) {
    t.cancel();
    t = null
  }

Opa, beleza?
Desculpa por não especificar que o timer na verdade era do tipo Timer.
Mas beleza era isso mesmo que eu queria saber! Tipo eu pensei que o mesmo objeto timer dava pra schedular varias timerTasks, mas beleza. Então de acordo com o que voce disse se eu apontar o timer pra null a tarefa associada a ele é cancelada altomaticamente certo?
Obrigado pela força!

Chame o cancel antes, apenas aponto para null porque uso hashtable. Se eu chamar o cancel não consigo fazer o controle no meu hash para saber se a tarefa ja foi cancelada.

Então mesmo dando cancel depois se eu tentar reagendar a mesma tarefa ele dá um erro dizendo que a tarefa já foi cancelada. Tem alguma forma de descobrir se uma tarefa foi ou não agendada? Porque no caso eu estava pensando no seguinte esquema: Caso de uma task já agentada ser novamente agendada eu pensei em calcelar a existente e agenda-la de novo mas isso não está dando certo. Se houver alguma forma de eu descobrir se alguma task foi ou não agendada meu problema se resolverá mais facilmente.
Obrigado!