Ho trovato domande simili qui ma non ci sono state risposte alla mia soddisfazione. Quindi riformulare nuovamente la domanda:Timer e TimerTask contro Thread + sleep in Java
Ho un'attività che deve essere eseguita su base periodica (ad esempio intervalli di 1 minuto). Qual è il vantaggio di utilizzare Timer tempTimer per farlo invece di creare un nuovo thread che ha un ciclo infinito con sleep?
Snippet di codice utilizzando timertask-
TimerTask uploadCheckerTimerTask = new TimerTask(){
public void run() {
NewUploadServer.getInstance().checkAndUploadFiles();
}
};
Timer uploadCheckerTimer = new Timer(true);
uploadCheckerTimer.scheduleAtFixedRate(uploadCheckerTimerTask, 0, 60 * 1000);
frammento di codice con filo e sonno-
Thread t = new Thread(){
public void run() {
while(true) {
NewUploadServer.getInstance().checkAndUploadFiles();
Thread.sleep(60 * 1000);
}
}
};
t.start();
io davvero non si deve preoccupare se manco certi cicli se l'esecuzione della logica prende più del tempo dell'intervallo.
Si prega di commentare questa ..
Grazie,
-Keshav
Aggiornamento:
Recentemente ho trovato un'altra differenza tra l'utilizzo di Timer contro Thread.sleep(). Supponiamo che l'ora attuale del sistema sia 11:00 AM. Se per qualche motivo il rollback delle ore del sistema viene effettuato alle 10:00 AM, il timer smetterà di eseguire l'attività fino a quando non avrà raggiunto le 11:00 AM, mentre il metodo Thread.sleep() continuerà a eseguire l'attività senza impedimenti. Questo può essere un importante fattore decisionale nel decidere cosa usare tra questi due.
Point of order: Timer e TimerTask sono obsoleti e sono stati effettivamente sostituiti da ExecutorService, sebbene il punto rimanga valido. – skaffman
Grazie per il suggerimento, ho deciso di utilizzare ExecutorService :) – Keshav
Grazie a tutti per le risposte, sicuramente mi ha dato più comprensione! – Keshav