J'ai trouvé des questions similaires posées ici mais il n'y avait pas de réponses à ma satisfaction. Donc reformuler la question à nouveau -
J'ai une tâche qui doit être effectuée périodiquement (disons 1 minute d'intervalle). Quel est l'avantage d'utiliser Timertask & Timer pour ce faire par rapport à la création d'un nouveau thread qui a une boucle infinie avec sommeil?
Extrait de code utilisant timertask-
TimerTask uploadCheckerTimerTask = new TimerTask(){
public void run() {
NewUploadServer.getInstance().checkAndUploadFiles();
}
};
Timer uploadCheckerTimer = new Timer(true);
uploadCheckerTimer.scheduleAtFixedRate(uploadCheckerTimerTask, 0, 60 * 1000);
Extrait de code utilisant Thread et sleep-
Thread t = new Thread(){
public void run() {
while(true) {
NewUploadServer.getInstance().checkAndUploadFiles();
Thread.sleep(60 * 1000);
}
}
};
t.start();
Je n'ai vraiment pas à m'inquiéter si je rate certains cycles si l'exécution de la logique prend plus que l'intervalle de temps.
Veuillez commenter ceci.
Mise à jour:
Récemment, j'ai trouvé une autre différence entre l'utilisation de Timer et Thread.sleep (). Supposons que l'heure système actuelle soit 11h00. Si nous annulons l'heure système à 10h00 pour une raison quelconque, The Timer arrêtera d'exécuter la tâche jusqu'à ce qu'elle atteigne 11h00, tandis que la méthode Thread.sleep () continuerait d'exécuter la tâche sans entrave. Cela peut être un décideur majeur pour décider quoi utiliser entre les deux.