1. Konzept
Die zeitgesteuerte geplante Aufgabenfunktion verwendet hauptsächlich Timer-Objekte in Java, das Multi-Threading intern zur Verarbeitung verwendet. Daher hängt sie immer noch sehr mit Multi-Threading-Technologie zusammen. In JDK ist die Timer -Klasse hauptsächlich für die Funktion der Planungsaufgaben verantwortlich, dh beginnt, eine bestimmte Aufgabe zu einer bestimmten Zeit auszuführen, aber die Klasse, die die Aufgabe zusammenfasst, ist die Timertask -Klasse.
Passen Sie die zu ausgeführte Aufgabe an, indem die TimerTask -Klasse erben und die Run () -Methode implementiert wird:
public class mytask erweitert timerTask {@Override public void run () {DateFormat DateFormat = timeutil.df.get (); System.out.println ("Meine Aufgabe läuft" + DateFormat.format (neues Datum ())); }}Führen Sie die Aufgabe zur Ausführungszeit aus, indem Sie Timer.Schedule (TimerTask -Aufgabe, Datumszeit) ausführen:
public class run {private static Timer Timer = new Timer (); public static void main (String [] args) löst ParseException (Timer.Schedule (New MyTask (), Timeutil.df.get (). Parse ("2017-09-14 09:19:30")) aus. }}HINWEIS: Zeitkonvertierungswerkzeugklasse sorgt für Thread -Sicherheit:
public class timeutil {public static Final ThreadLocal <DateFormat> df = new ThreadLocal <DateFormat> () {@Override Protected DateFormat initialValue () {return New SimpleDateFormat ("Yyyyy-Mm-Dd Hh: mm: ss"); }};} 2. Vorsichtsmaßnahmen der Timerklasse
1. Erstellen eines Timer -Objekts bedeutet, dass ein neuer Thread gestartet wird, aber der neu gestartete Thread ist kein Daemon -Thread. Es läuft im Hintergrund. Der neu gestartete Timer -Thread kann als Dämon -Thread durch Folgendes eingestellt werden.
private statische Timer -Timer = neuer Timer (True);
2. Im Voraus: Wenn die geplante Zeit früher als die aktuelle Zeit ist, wird die Aufgabe sofort ausgeführt.
3.. Verzögerung: TimerTask wird nacheinander in einer Warteschlange ausgeführt, sodass die Ausführungszeit möglicherweise nicht mit der Zeit, die Sie erwarten, nicht übereinstimmen, da die vorherige Aufgabe möglicherweise lange dauert und die Laufzeit der nachfolgenden Aufgabe verzögert wird. Die spezifische Startzeit der verzögerten Aufgabe basiert auf der "Endzeit" der vorherigen Aufgabe.
4. Periodischer Betrieb: Timer.
5. Zeitplan (TimerTask -Aufgabe, lange Verzögerung) Die aktuelle Zeit ist die Referenzzeit. Nach der Verzögerung der festgelegten Anzahl von Millisekunden in dieser Zeit wird die TimerTask -Aufgabe ausgeführt.
6. Zeitplan (TimerTask -Aufgabe, lange Verzögerung, lange Zeitraum) Die aktuelle Zeit ist die Referenzzeit. Verzögern Sie auf dieser Basis die festgelegte Anzahl von Millisekunden und führen Sie dann eine Aufgabe mit einer unendlichen Häufigkeit in einem bestimmten Intervall aus.
7. Was ist der Unterschied zwischen Timer's Cancel () und TimerTask's Cancel ()?
Die zuvor erwähnte Ausführung von Aufgaben wird nacheinander in Form von Spalten ausgeführt. TimerTask.cancel () bezieht sich auf die Absage der aktuellen Aufgabe aus der Task-to-Säule. Der Wert von Timer.cancel () besteht darin, alle Aufgaben in der aktuellen Task -Warteschlange zu stornieren. Es ist erwähnenswert, dass Timer's Cancel () manchmal nicht unbedingt die Ausführung geplanter Aufgaben aufhört, sondern sie normal ausführt. Dies liegt daran, dass die Cancel () -Methode in der Timer -Klasse manchmal nicht um die Warteschlangenkonkurrenz konkurriert, sodass die Aufgaben in der TimerTask -Klasse weiterhin normal ausgeführt werden.
3. Die Differenz zwischen ScheduleatFixedrate (TimerTask -Aufgabe, Datum des ersten Zeitpunkts, langer Zeitraum) und Zeitplan (TimerTask -Aufgabe, Datum des ersten Zeitpunkts, langer Zeitraum)
Ähnlichkeiten:
1. Der Methodenplan und die Methode ScheduleatFixedRate werden in der Reihenfolge ausgeführt, sodass keine Sicherheitssituationen ohne Thread erforderlich sind.
2. Methodenplan und Methode ScheduleatFixedRate Wenn der Zeitpunkt der Ausführung einer Aufgabe nicht verzögert ist, wird die Ausführungszeit der nächsten Aufgabe basierend auf der Zeit am "Start" der vorherigen Aufgabe berechnet.
3.. Methodenplan und Methode ScheduleatFixedRate Wenn die Zeit für die Ausführung einer Aufgabe verzögert ist, wird die Ausführungszeit der nächsten Aufgabe berechnet, indem sich auf die Zeit am Ende der letzten Aufgabe bezieht.
Unterschiede:
Grundsätzlich gibt es keinen Unterschied zwischen dem Methodenplan und dem verwendeten MethodenscheduleatFixedrat, dh ScheduleatFixedrates hat eine Nachholausführung. Was bedeutet es? Das heißt, wenn die Aufgabe während des regelmäßigen Betriebs unterbrochen wird, wird ScheduleatFixedratate versucht, die zuvor fallengelassenen Aufgaben auszufüllen. Und der Zeitplan wird ignoriert und dann die nächste Aufgabe ausführen. Sie können sich auf diesen Blog beziehen, der lebhaft geschrieben ist.
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.