Erstellen eines sich wiederholenden timer Erinnerung in Java
Ich möchte eine Klasse, die änderungen seiner privaten Variablen wird alle 2 Sekunden. Ich weiß, dass wenn ich etwas mache, wie
import java.util.Timer;
//...
Timer timer;
//...
timer.schedule(new ChangeSomething(), 2000);
Ausgeführt wird ChangeSomething()
nach 2 Sekunden, gibt es eine Möglichkeit zu sagen, es zu tun, etwas, das alle 2 Sekunden, oder, Wenn ich innerhalb ChangeSomething()
timer.schedule(new ChangeSomething(), 2000);
wird es funktionieren?
Am Rande, was bedeutet timer.cancel()
genau tun?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden
timer.scheduleAtFixedRate()
planen, es zu wiederholen alle zwei Sekunden:Aus der javadoc für
Timer.cancel()
:EDIT:
Bezüglich der internen Ausführungs-thread für eine
Timer
führt eine einzelne Aufgabe einmal:Timer
zeigt, ist dies nicht erforderlich, und der timer ist exeecution thread wird beendet. Es heißt jedoch ausdrücklich, dass dies eine beliebig lange Zeit undcancel()
können verwendet werden, um ihn zu beenden schneller. (Eingefügte Absatz maßgeblich von Javadoc in die Antwort).Müssen Sie, um den Anruf zu einer anderen scheduling-Methode des Timer-namens scheduleAtFixedRate(...) bekommt 3 Parameter. Die ersten 2 sind identisch mit denen der Zeitplan für die Sie verwendet haben, während Der Dritte parameter gibt eine Zeit in Millisekunden zwischen aufeinanderfolgenden task-Ausführungen.
Können Sie die java-pai-doc für diese Methode hier: http://docs.oracle.com/javase/6/docs/api/java/util/Timer.html#scheduleAtFixedRate(java.util.TimerTask, java.util.Datum, lang)
Hier ist ein Beispiel
}
Um genauer zu sein hier: ChangeSomething() ist der Konstruktor Ihre ChangeSomething Klasse. Der Konstruktor wird sofort ausgeführt, wenn der ChangeSomething instace Objekt an den timer, nicht nach 2 Sekunden. Es ist das Objekt der Methode run() wird ausgelöst, nachdem 2 Sekunden.
Auszuführen, dass die run () - Methode wiederholt alle 2 Sekunden
schedule(TimerTask task, long delay, long period)