Ich fand hier ähnliche Fragen, aber es gab keine Antworten zu meiner Zufriedenheit. Also die Frage noch einmal umformulieren -
Ich habe eine Aufgabe, die regelmäßig erledigt werden muss (z. B. Intervalle von 1 Minute). Was ist der Vorteil der Verwendung von Timertask & Timer, anstatt einen neuen Thread zu erstellen, der eine Endlosschleife mit Schlaf hat?
Code-Snippet mit Timertask-
TimerTask uploadCheckerTimerTask = new TimerTask(){
public void run() {
NewUploadServer.getInstance().checkAndUploadFiles();
}
};
Timer uploadCheckerTimer = new Timer(true);
uploadCheckerTimer.scheduleAtFixedRate(uploadCheckerTimerTask, 0, 60 * 1000);
Code-Snippet mit Thread und sleep-
Thread t = new Thread(){
public void run() {
while(true) {
NewUploadServer.getInstance().checkAndUploadFiles();
Thread.sleep(60 * 1000);
}
}
};
t.start();
Ich muss mir wirklich keine Sorgen machen, wenn ich bestimmte Zyklen verpasse, wenn die Ausführung der Logik länger als die Intervallzeit dauert.
Bitte kommentieren Sie dies ..
Update:
Kürzlich habe ich einen weiteren Unterschied zwischen der Verwendung von Timer und Thread.sleep () festgestellt. Angenommen, die aktuelle Systemzeit ist 11:00 Uhr. Wenn wir die Systemzeit aus irgendeinem Grund auf 10:00 Uhr zurücksetzen, stoppt der Timer die Ausführung der Aufgabe, bis sie 11:00 Uhr erreicht hat, während die Thread.sleep () -Methode die Ausführung der Aufgabe ungehindert fortsetzt. Dies kann ein wichtiger Entscheidungsträger bei der Entscheidung sein, was zwischen diesen beiden verwendet werden soll.