Package de.bsvrz.ars.ars.mgmt.tasks
Class Task
java.lang.Object
de.bsvrz.ars.ars.mgmt.tasks.AbstractTask
de.bsvrz.ars.ars.mgmt.tasks.Task
- Direct Known Subclasses:
RepeatingTask,RestorePersDirTsk
public abstract class Task extends AbstractTask
Abstrakte Basisklasse für die abstrakten Task-Basisklassen
SingleTask und MultiTask.
Ein Task ist ein Thread, eine bestimmte Aktion ausführt. Mit AbstractTask.terminateTask() kann diese Aufgabe abgebrochen werden.
Während der Ausführung kann der Task mit AbstractTask.shouldTerminate() prüfen, ob er terminiert wurde und dann die Aufgabe ggf. neu starten.
-
Field Summary
Fields inherited from class de.bsvrz.ars.ars.mgmt.tasks.AbstractTask
_debug, _shouldTerminate, archMgr, didTree, persMgr -
Constructor Summary
Constructors Constructor Description Task(ArchiveManager archiveMgr)Erstellt einen neuen Task -
Method Summary
Modifier and Type Method Description voidaddTaskStepListener(TaskStepListener tsl)Zu Testzwecken kann hiermit ein Listener eingefuegt werden, der am Ende eines jedem Schleifendurchlaufs aufgerufen wird.protected voidcleanUp()Wird garantiert aufgerufen, nachdem der Task vollständig terminiert wurde.protected voidexecute()Diese Methode muss implementiert werden und definiert die Aktion, die dieser Task ausführt.java.lang.StringgetName()Gibt den Namen zurückjava.lang.Thread.StategetState()Gibt den Zustand den Threads zurückbooleanisAlive()Gibttruezurück, wenn der Task aktuell läuftbooleanisTerminated()Gibttruezurück, wenn der Task schon gelaufen ist und komplett terminiert wurdevoidjoin()Wartet auf das Beenden des Tasks nach der Terminierung.voidremoveTaskStepListener(TaskStepListener tsl)Entfernt den Listener.voidsetName(java.lang.String name)Setzt den Namen, der auch den Namen des Threads definiert und in Debug-Ausgaben benutzt wird.voidstart()Startet den Thread, der den Task ausführtprotected voidtaskStepDone()Benachrichtigt darüber, dass ein Schleifendurchlauf abgearbeitet wurde.Methods inherited from class de.bsvrz.ars.ars.mgmt.tasks.AbstractTask
getArchMgr, getObjectsFromDav, shouldTerminate, suspendTaskIfNecessary, terminateTaskMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Constructor Details
-
Task
Erstellt einen neuen Task- Parameters:
archiveMgr- Archiv-Manager (Kann für Testfälle und ähnliches null sein, allerdings kann es dann passieren, das bestimmte Funktionen nicht funktionieren.)
-
-
Method Details
-
getState
public final java.lang.Thread.State getState()Gibt den Zustand den Threads zurück- Returns:
- Zustand
-
start
public void start()Startet den Thread, der den Task ausführt- Specified by:
startin classAbstractTask- See Also:
Thread.start()
-
execute
protected void execute()Diese Methode muss implementiert werden und definiert die Aktion, die dieser Task ausführt.Der Implementierende sollte am ende
super.execute()ausführen. -
cleanUp
protected void cleanUp()Wird garantiert aufgerufen, nachdem der Task vollständig terminiert wurde. Dieser Code wird im selben Thread ausgeführt, wie der eigentliche TaskTut standardmäßig nichts, kann überschrieben werden um Daten aufzuräumen, Abmeldungen durchzuführen usw.
-
addTaskStepListener
Zu Testzwecken kann hiermit ein Listener eingefuegt werden, der am Ende eines jedem Schleifendurchlaufs aufgerufen wird. Auf diese Weise sind z.B. die Tasks einfacher zu testen. Wenn ein Task abgebrochen wird, kann nicht garantiert werden, dass für die letzte Schleife derTaskStepListeneraufgerufen wird.- Parameters:
tsl- Callback-Interface
-
removeTaskStepListener
Entfernt den Listener.- Parameters:
tsl- Callback-Interface
-
taskStepDone
protected void taskStepDone()Benachrichtigt darüber, dass ein Schleifendurchlauf abgearbeitet wurde. -
getName
public final java.lang.String getName()Gibt den Namen zurück- Specified by:
getNamein classAbstractTask- Returns:
- den Namen
-
setName
public final void setName(java.lang.String name)Setzt den Namen, der auch den Namen des Threads definiert und in Debug-Ausgaben benutzt wird.- Specified by:
setNamein classAbstractTask- Parameters:
name- neuer Name (nicht null)
-
join
public void join() throws java.lang.InterruptedExceptionWartet auf das Beenden des Tasks nach der Terminierung. Beispielcode:task.terminateTask(); // Task soll bei der nächsten Möglichkeit terminieren (asynchroner Aufruf) task.join(); // Auf das terminieren synchron warten- Specified by:
joinin classAbstractTask- Throws:
java.lang.InterruptedException- bei Unterbrechung- See Also:
Thread.join()
-
isAlive
public boolean isAlive()Gibttruezurück, wenn der Task aktuell läuft- Specified by:
isAlivein classAbstractTask- Returns:
true, wenn der Task aktuell läuft, sonstfalse
-
isTerminated
public boolean isTerminated()Gibttruezurück, wenn der Task schon gelaufen ist und komplett terminiert wurde- Specified by:
isTerminatedin classAbstractTask- Returns:
true, wenn der Task schon gelaufen ist und komplett terminiert wurde, sonstfalse
-