Encontré preguntas similares hechas aquí pero no hubo respuestas para mi satisfacción. Volviendo a formular la pregunta nuevamente:Timer & TimerTask versus Thread + sleep en Java
Tengo una tarea que debe realizarse periódicamente (por ejemplo, intervalos de 1 minuto). ¿Cuál es la ventaja de utilizar Timertask & Timer para hacer esto en lugar de crear un nuevo hilo que tiene un ciclo infinito con sleep?
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 hilo y sueño-
Thread t = new Thread(){
public void run() {
while(true) {
NewUploadServer.getInstance().checkAndUploadFiles();
Thread.sleep(60 * 1000);
}
}
};
t.start();
verdad es que no tiene que preocuparse si me olvido de ciertos ciclos si la ejecución de la lógica de toma más que el tiempo de intervalo.
Sírvanse comentar esta ..
Gracias,
-Keshav
Actualización:
Recientemente he encontrado otra diferencia entre el uso del temporizador frente Thread.sleep(). Supongamos que la hora actual del sistema es 11:00 a.m. Si restituimos la hora del sistema a 10:00 a.m. por algún motivo, The Timer DEJARÁ de ejecutar la tarea hasta que haya llegado a las 11:00 AM, mientras que el método Thread.sleep() continuará ejecutando la tarea sin obstáculos. Este puede ser un importante tomador de decisiones al decidir qué usar entre estos dos.
Punto de orden: Timer y TimerTask están obsoletos, y han sido reemplazados por ExecutorService, aunque su punto sigue en pie. – skaffman
Gracias por el consejo, decidí utilizar ExecutorService :) – Keshav
Gracias a todos por las respuestas, seguramente me dio más comprensión! – Keshav