Heim  >  Artikel  >  Java  >  Detaillierte Einführung in das Codebeispiel der geplanten Aufgabe taskScheduler im Frühjahr

Detaillierte Einführung in das Codebeispiel der geplanten Aufgabe taskScheduler im Frühjahr

黄舟
黄舟Original
2017-03-06 10:32:462070Durchsuche

Dieser Artikel stellt hauptsächlich die relevanten Informationen zum TaskScheduler im Frühjahr vor. Ich glaube, dass er einen gewissen Referenzwert für alle hat, die ihn benötigen.

Vorwort

Wie wir alle wissen, verfügt es nach der Frühjahrsversion 3.0 über ein Tool für geplante Aufgaben, das einfach und bequem ist zu verwenden, ohne dass Konfigurationsdateien erforderlich sind. Ändern Sie den Ausführungsstatus dynamisch. Sie können Cron-Ausdrücke auch verwenden, um geplante Aufgaben einzurichten.

Die ausgeführte Klasse muss die Runnable-Schnittstelle

TaskScheduler-Schnittstelle

TaskScheduler implementieren Es handelt sich um eine Schnittstelle. Die TaskScheduler-Schnittstelle definiert 6 Methoden


1, schedule(Runnable task, Trigger trigger);

, um eine Triggerausführungs-Timing-Aufgabe anzugeben . Mit CronTrigger können Sie Cron-Ausdrücke angeben, um geplante Aufgaben auszuführen

 CronTrigger t = new CronTrigger("0 0 10,14,16 * * ?");
 taskScheduler.schedule(this, t);

2. Geben Sie eine bestimmte an Führen Sie geplante Aufgaben zu einem bestimmten Zeitpunkt aus, und Sie können den Zeitpunkt zum Starten der Aufgabe dynamisch angeben. Nur einmal ausgeführt. (Viel einfacher zu verwenden als Timer. Ich wünschte, ich hätte diese Schnittstelle früher entdeckt...) schedule(Runnable task, Date startTime);

3. Sofort ausführen, die Aufgabe durchlaufen, Geben Sie einen Ausführungszyklus an (Millisekunden-Timing)


scheduleAtFixedRate(Runnable task, long period);PS:

Unabhängig davon, ob der vorherige Zyklus abgeschlossen ist oder nicht, beginnt der nächste Zyklus mit der Ausführung, wenn der Die Zeit ist abgelaufen


4. Geben Sie die Zeit zum Starten der Ausführung an, führen Sie einen Zyklus der Aufgabe durch und geben Sie einen Intervallzeitraum an (Millisekunden-Timing)

PS ; Aufgabe: Geben Sie einen Intervallzeitraum an (Millisekunden-Timing)

scheduleAtFixedRate(Runnable task, Date startTime, long period);
PS:

Nach dem vorherigen Zyklus ausgeführt, warten Sie auf die Verzögerungszeit, und der nächste Zyklus beginnt mit der Ausführung

6. Geben Sie die Zeit für den Start der Ausführung an, führen Sie einen Zyklus durch Geben Sie ein Intervall an (Millisekunden-Timing)
PS:

Nachdem der vorherige Zyklus ausgeführt wurde, warten Sie auf die Verzögerungszeit, und der nächste Zyklus beginnt mit der Ausführung scheduleWithFixedDelay(Runnable task, long delay);

Es gibt fünf Implementierungsklassen unter TaskScheduler


1. ConcurrentTaskScheduler

Ausführen Aufgaben im aktuellen Thread. Wenn die Aufgabe einfach ist, können Sie sie direkt mit dieser Klasse ausführen. Schnell und bequem.

scheduleWithFixedDelay(Runnable task, Date startTime, long delay);

PS:

Dies ist ein Single-Thread-Lauf

2, DefaultManagedTaskScheduler

führt Aufgaben im aktuellen Thread aus. Dies ist eine Unterklasse von ConcurrentTaskScheduler und fügt JNDI-Unterstützung hinzu. Dieselbe Verwendung wie ConcurrentTaskScheduler, Sie müssen JNDI verwenden, um es separat festzulegen


3. ThreadPoolTaskScheduler


Die Standardimplementierungsklasse der TaskScheduler-Schnittstelle, geplante Multithread-Aufgabe Ausführung. Sie können die Anzahl der Ausführungs-Thread-Pools festlegen (Standard ist ein Thread).


PS:

Muss vor der Verwendung aufgerufen werden

[Initialisierungsmethode]
public class LocTest implements Runnable {
 private ConcurrentTaskScheduler tpts = new ConcurrentTaskScheduler();
 private void start() {
tpts.schedule(this, new Date());
 }
 public void run() {
Thread ct = Thread.currentThread();
System.out.println("current id:"+ct.getId());
System.out.println("current name:"+ct.getName());
 }
 public static void main(String[] args) {
new LocTest().start();
 }
}


hat eine

-Methode, Sie können den Thread nach der Ausführung schließen




4. TimerManagerTaskScheduler

Dies wird nicht verwendet, daher weiß ich es nicht im Detail, wenn ich Zeit habe. Wer mehr weiß, kann gerne ergänzen.

Zusammenfassung
  1. initialize()

  2. Das Obige ist eine detaillierte Einführung in das Codebeispiel des geplanten Aufgabe taskScheduler im Frühjahr Inhalt, weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!

    shutDown()

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn