1. Einführung
In Java muss eine vollständige geplante Aufgabe von zwei Klassen abgeschlossen werden: Timer und TimerTask. Sie sind in der API wie folgt definiert: Timer: ein Tool, mit dem Threads Aufgaben planen, die in Zukunft in Hintergrundthreads ausgeführt werden sollen. Aufgaben können so geplant werden, dass sie einmal ausgeführt werden oder sich regelmäßig wiederholen. Von TimerTask: Eine von einem Timer geplante Aufgabe zur einmaligen oder wiederkehrenden Ausführung. Wir können verstehen, dass Timer ein Timer-Tool ist, das zum Planen und Ausführen bestimmter Aufgaben in einem Hintergrundthread verwendet wird, während TimerTask eine abstrakte Klasse ist und ihre Unterklassen eine Aufgabe darstellen, die von Timer geplant werden kann.
Timer-Klasse
In der Tool-Klasse Timer stehen vier Konstruktionsmethoden zur Verfügung. Gleichzeitig kann die Timer-Klasse sicherstellen, dass mehrere Threads einen gemeinsam nutzen können einzelnes Timer-Objekt ohne externe Synchronisierung, daher ist die Timer-Klasse threadsicher. Da jedoch jedes Timer-Objekt einem einzelnen Hintergrundthread entspricht, der zur sequentiellen Ausführung aller Timer-Aufgaben verwendet wird, sollte die von unserem Thread benötigte Zeit für die Ausführung der Aufgabe im Allgemeinen sehr kurz sein. Aufgrund besonderer Umstände kann die Ausführung einer Timer-Aufgabe jedoch länger dauern Wenn es zu lang ist, belegt es „ausschließlich“ den Aufgabenausführungsthread des Timers und alle nachfolgenden Threads müssen warten, bis die Ausführung abgeschlossen ist, was die Ausführung nachfolgender Aufgaben verzögert und dazu führt, dass sich diese Aufgaben häufen Analyse später.
Wenn das Programm den Timer initialisiert, wird die geplante Aufgabe gemäß der von uns festgelegten Zeit ausgeführt. Der Timer stellt die Zeitplanmethode bereit, die über mehrere Überlastungsmethoden zur Anpassung an verschiedene Situationen verfügt, wie folgt:
Schedule(TimerTask task, Date time): Planen Sie die Ausführung der angegebenen Aufgabe zum angegebenen Zeitpunkt.
Schedule(TimerTask task, Date firstTime, long period): Planen Sie die angegebene Aufgabe so, dass sie zum angegebenen Zeitpunkt wiederholt mit fester Verzögerung ausgeführt wird.
Zeitplan (TimerTask-Aufgabe, lange Verzögerung): Planen Sie die Ausführung der angegebenen Aufgabe nach der angegebenen Verzögerung.
Zeitplan (TimerTask-Aufgabe, lange Verzögerung, langer Zeitraum): Ordnet die angegebene Aufgabe für die wiederholte Ausführung mit fester Verzögerung ab der angegebenen Verzögerung an.
Gleichzeitig ist die ScheduleAtFixedRate-Methode mit der ScheduleAtFixedRate-Methode identisch, ihr Fokus ist jedoch unterschiedlich. Der Unterschied wird später analysiert.
schemeAtFixedRate(TimerTask task, Date firstTime, long period): Planen Sie die angegebene Aufgabe so, dass sie zum angegebenen Zeitpunkt mit der wiederholten Ausführung mit fester Rate beginnt.
ScheduleAtFixedRate(TimerTask-Aufgabe, lange Verzögerung, langer Zeitraum): Planen Sie die angegebene Aufgabe so, dass sie nach der angegebenen Verzögerung mit der wiederholten Ausführung mit fester Rate beginnt.
TimerTask
Die TimerTask-Klasse ist eine abstrakte Klasse, die von Timer für einmalige oder wiederholte Aufgaben geplant wird. Es verfügt über eine abstrakte Methode run(), mit der die Operation ausgeführt wird, die von der entsprechenden Timer-Aufgabe ausgeführt werden soll. Daher muss jede spezifische Aufgabenklasse TimerTask erben und dann die run()-Methode überschreiben.
Darüber hinaus verfügt es über zwei nicht abstrakte Methoden:
boolean cancel(): Diese Timer-Aufgabe abbrechen.
long ScheduledExecutionTime(): Gibt die letzte geplante Ausführungszeit dieser Aufgabe zurück.
2. Beispiel:
Naims_task.xml
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:task="http://www.springframework.org/schema/task" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/tx/spring-tx-4.0.xsd http://www.springframework.org/schema/jee/spring-jee-4.0.xsd http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/task/spring-task-4.0.xsd"><task:annotation-driven /> <!-- 定时器开关--> <bean id="myTask" class="com.wisoft.jazwfw.convenienceServices.controller.ConvenienceServicesController"></bean> <task:scheduled-tasks> <!-- 这里表示的是每天23点59分执行一次 --><task:scheduled ref="myTask" method="getPubService" cron="0 59 23 * * ?" /> <!-- 这里表示的是每隔十秒执行一次 --><!-- <task:scheduled ref="myTask" method="print" cron="*/10 * * * * ?"/> --> </task:scheduled-tasks> <!-- 自动扫描的包名 --> <context:component-scan base-package="com.wisoft.jazwfw.convenienceServices.controller" /> </beans>
Dann fügen Sie
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"><beans><import resource="spring/Naims_ws.xml" /><import resource="spring/Naims_bo.xml" /><import resource="spring/Naims_dao.xml"/><import resource="spring/Naims_params.xml"/><import resource="spring/Naims_task.xml"/></beans>
Das obige ist der detaillierte Inhalt vonBeschreibung der geplanten Java-Aufgaben. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!