Galera, tenho minha classe implementando a classe run abstrata de TimeTask, Porém meu programa roda apenas um vez, ele nao é continuo.
Alguém pode me dizer como faço para deixala continua? Para que nao pare na próxima vez em que o programa rodar?
Aqui vai meu código:
public final class TemporizadorSensores extends TimerTask {
//varolres em milisegundos para configurar o timeTask
private final static long diaEmMiliSeconds = 1000 * 60 * 60 * 24;
private final static int fONE_DAY = 1;
private final static int fFOUR_AM = 2;
private final static int fZERO_MINUTES = 0;
/**
* Construtor de TimerTask e Timer.
*/
public static void main(String args[]) {
TimerTask temporizador = new TemporizadorSensores();
//execute o programa todos os dias as 2 da manhã, comecando no proximo dia.
Timer timer = new Timer();
timer.scheduleAtFixedRate(temporizador, getProximoDia2Manha(), diaEmMiliSeconds);
}
/**
* Implementa classe abastrata run de TimeTask.
*/
public void run() {
Principal principal = new Principal();
CreateLogMessage log = new CreateLogMessage();
ReturnStringLog stringLog = new ReturnStringLog();
EnviarEmail email = new EnviarEmail(Configuracoes.getEmailMessage());
}
/**
* Metodo que retorna o dia de amanhã na hora passada,
* neste caso estamos fazendo com que o programa seja rodado todos os dias as 2 da manhã.
* @return dateTomorrow
*/
private static Date getProximoDia2Manha() {
//Cria uma data chamada tomorrow.
Calendar tomorrow = new GregorianCalendar();
//Adiciona nessa data, que até agora está referenciada como a data da VM,
//os milissegundos necessários para que seja o proximo dia.
tomorrow.add(Calendar.DATE, fONE_DAY);
//Instancia de calendar passando como argumento o dia de amanha, na hora e minuto desejado,
//que neste caso é as 2 da manhã.
Calendar result = new GregorianCalendar(
tomorrow.get(Calendar.YEAR),
tomorrow.get(Calendar.MONTH),
tomorrow.get(Calendar.DATE),
fFOUR_AM,
fZERO_MINUTES);
//retorna uma Data para que o schedule seja rodado.
return result.getTime();
}
}