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:
publicvoidrun(){if(System.currentTimeMillis()-scheduledExecutionTime()>=MAX_TARDINESS)return;// Too late; skip this execution.// Perform the task}
importjava.util.Timer;importjava.util.TimerTask;publicclassMyTimer{publicstaticfinallongTEMPO=(1000*60);// atualiza o site a cada 1 minutopublicstaticvoidmain(String[]args){System.out.println("inicio");Timertimer=null;if(timer==null){timer=newTimer();TimerTasktarefa=newTimerTask(){publicvoidrun(){try{System.out.println("Teste agendador");//chamar metodo}catch(Exceptione){e.printStackTrace();}}};timer.scheduleAtFixedRate(tarefa,TEMPO,TEMPO);}}}
Eu fiz como vc mencionou que conseguiu, mas o site (no caso uma atualização no banco) não é realizada
packagecom.mydomain.sgs;importjava.util.Timer;importjava.util.TimerTask;importorg.jboss.seam.annotations.In;publicclassMyTimer{publicstaticfinallongTEMPO=(1000*60);// atualiza o site a cada 1 minutopublicstaticvoidmain(String[]args){System.out.println("inicio");Timertimer=null;if(timer==null){timer=newTimer();TimerTasktarefa=newTimerTask(){@In(create=true)NotasListnotasList;@In(create=true)InutilListinutilList;publicvoidrun(){try{for(intk=0;k<inutilList.getResultList().size();k++){for(inti=0;i<notasList.getResultList().size();i++){if(notasList.getResultList().get(i).getNumNf()==inutilList.getResultList().get(k).getNumNf()){notasList.getResultList().get(i).setStatusSefaz(true);}}}}catch(Exceptione){e.printStackTrace();}}};timer.scheduleAtFixedRate(tarefa,TEMPO,TEMPO);}}}
é preciso fazer a chamada do metodo run? ou a implementação efetua automaticamente a cada 1 minuto?
P
Pedrosa
A cada um minuto ele roda sozinho conforme o exemplo.
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…