Ich fand ähnliche Fragen hier, aber es gab keine Antworten zu meiner Zufriedenheit. Also die Frage noch einmal umformulieren -Timer & TimerTask versus Thread + Schlaf in Java
Ich habe eine Aufgabe, die auf einer periodischen Basis (sagen wir 1 Minute Intervalle) getan werden muss. Was ist der Vorteil der Verwendung von Timertask & Timer, um dies zu tun, im Gegensatz zum Erstellen eines neuen Threads, 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-Schnipsel mit Gewinde und Sleep-
Thread t = new Thread(){
public void run() {
while(true) {
NewUploadServer.getInstance().checkAndUploadFiles();
Thread.sleep(60 * 1000);
}
}
};
t.start();
ich habe nicht zu kümmern, wenn ich bestimmte Zyklen wirklich vermissen, wenn die Ausführung der Logik nimmt mehr als die Intervallzeit.
Kommentar Bitte auf diese ..
Danke,
-Keshav
Update:
Vor kurzem fand ich einen weiteren Unterschied zwischen Timer gegen Thread.sleep() verwenden. Angenommen, die aktuelle Systemzeit ist 11:00 Uhr. Wenn wir die Systemzeit aus irgendeinem Grund auf 10:00 Uhr zurücksetzen, wird der Timer die Ausführung des Tasks stoppen, bis er 11:00 Uhr erreicht hat, während die Thread.sleep() - Methode die Task ohne Behinderung weiter ausführt. Dies kann ein wichtiger Entscheidungsfaktor bei der Entscheidung sein, was zwischen diesen beiden zu verwenden ist.
Punkt der Reihenfolge: Timer und TimerTask sind veraltet, und wurden tatsächlich von ExecutorService ersetzt, obwohl Ihr Punkt immer noch steht. – skaffman
Danke für den Tipp, entschied ich mich für ExecutorService :) – Keshav
Vielen Dank für die Antworten, gab mir sicherlich mehr Verständnis! – Keshav