Encontré preguntas similares hechas aquí, pero no hubo respuestas a mi satisfacción. Así que reformulando la pregunta de nuevo
Tengo una tarea que debe realizarse de forma periódica (por ejemplo, intervalos de 1 minuto). ¿Cuál es la ventaja de usar Timertask & Timer para hacer esto en lugar de crear un nuevo hilo que tiene un bucle infinito con el sueño?
Fragmento 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);
Fragmento de código usando Thread y sleep-
Thread t = new Thread(){
public void run() {
while(true) {
NewUploadServer.getInstance().checkAndUploadFiles();
Thread.sleep(60 * 1000);
}
}
};
t.start();
Realmente no tengo que preocuparme si pierdo ciertos ciclos si la ejecución de la lógica toma más tiempo que el intervalo.
Por favor comente sobre esto ...
Actualización:
Recientemente encontré otra diferencia entre usar Timer versus Thread.sleep (). Suponga que la hora actual del sistema es las 11:00 a. M. Si revertimos la hora del sistema a las 10:00 a. M. Por alguna razón, el temporizador DEJARÁ de ejecutar la tarea hasta que llegue a las 11:00 a. M., Mientras que el método Thread.sleep () continuará ejecutando la tarea sin obstáculos. Este puede ser un factor importante a la hora de decidir qué utilizar entre estos dos.