Encontrei perguntas semelhantes feitas aqui, mas não havia respostas para minha satisfação. Então, reformulando a pergunta novamente-
Tenho uma tarefa que precisa ser feita periodicamente (digamos, intervalos de 1 minuto). Qual é a vantagem de usar o Timertask & Timer para fazer isso em vez de criar um novo encadeamento que tem um loop infinito com suspensão?
Snippet de código usando timertask-
TimerTask uploadCheckerTimerTask = new TimerTask(){
public void run() {
NewUploadServer.getInstance().checkAndUploadFiles();
}
};
Timer uploadCheckerTimer = new Timer(true);
uploadCheckerTimer.scheduleAtFixedRate(uploadCheckerTimerTask, 0, 60 * 1000);
Snippet de código usando Thread e sleep-
Thread t = new Thread(){
public void run() {
while(true) {
NewUploadServer.getInstance().checkAndUploadFiles();
Thread.sleep(60 * 1000);
}
}
};
t.start();
Eu realmente não preciso me preocupar se perder certos ciclos se a execução da lógica levar mais do que o tempo de intervalo.
Por favor, comente sobre isso ..
Atualização:
Recentemente descobri outra diferença entre usar Timer e Thread.sleep (). Suponha que a hora atual do sistema seja 11h. Se revertermos a hora do sistema para 10:00 AM por algum motivo, o Timer irá PARAR a execução da tarefa até chegar às 11:00, enquanto o método Thread.sleep () continuará executando a tarefa sem obstáculos. Este pode ser um grande tomador de decisões ao decidir o que usar entre os dois.