Package de.bsvrz.ars.ars.mgmt.tasks
Class AbstractTask
java.lang.Object
de.bsvrz.ars.ars.mgmt.tasks.Task
de.bsvrz.ars.ars.mgmt.tasks.AbstractTask
- Direct Known Subclasses:
RepeatingTask
,RestorePersDirTsk
Abstrakte Basisklasse für die abstrakten Task-Basisklassen
SingleTask
und MultiTask
.
Ein Task ist ein Thread, eine bestimmte Aktion ausführt. Mit Task.terminateTask()
kann diese Aufgabe abgebrochen werden.
Während der Ausführung kann der Task mit Task.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.Task
_debug, _shouldTerminate
-
Constructor Summary
ConstructorsConstructorDescriptionAbstractTask
(TaskManager archiveMgr) Erstellt einen neuen TaskAbstractTask
(PersistenceManager persistenceManager) Erstellt einen neuen Task -
Method Summary
Modifier and TypeMethodDescriptionvoid
Zu Testzwecken kann hiermit ein Listener eingefuegt werden, der am Ende eines jedem Schleifendurchlaufs aufgerufen wird.protected void
cleanUp()
Wird garantiert aufgerufen, nachdem der Task vollständig terminiert wurde.protected void
execute()
Diese Methode muss implementiert werden und definiert die Aktion, die dieser Task ausführt.final String
getName()
Gibt den Namen zurückfinal Thread.State
getState()
Gibt den Zustand den Threads zurückboolean
isAlive()
Gibttrue
zurück, wenn der Task aktuell läuftboolean
Gibttrue
zurück, wenn der Task schon gelaufen ist und komplett terminiert wurdevoid
join()
Wartet auf das Beenden des Tasks nach der Terminierung.void
Entfernt den Listener.final void
Setzt den Namen, der auch den Namen des Threads definiert und in Debug-Ausgaben benutzt wird.void
start()
Startet den Thread, der den Task ausführtprotected void
Benachrichtigt darüber, dass ein Schleifendurchlauf abgearbeitet wurde.Methods inherited from class de.bsvrz.ars.ars.mgmt.tasks.Task
getArchMgr, getDidTree, getPersistenceManager, shouldTerminate, suspendTaskIfNecessary, terminateTask
-
Constructor Details
-
AbstractTask
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.)
-
AbstractTask
Erstellt einen neuen Task- Parameters:
persistenceManager
- Archiv-Manager (Kann für Testfälle und ähnliches null sein, allerdings kann es dann passieren, das bestimmte Funktionen nicht funktionieren.)
-
-
Method Details
-
getState
Gibt den Zustand den Threads zurück- Returns:
- Zustand
-
start
public void start()Startet den Thread, der den Task ausführt -
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 derTaskStepListener
aufgerufen 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
Gibt den Namen zurück -
setName
Setzt den Namen, der auch den Namen des Threads definiert und in Debug-Ausgaben benutzt wird.- Parameters:
name
- neuer Name (nicht null)
-
join
Wartet 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:
join
in classTask
- Throws:
InterruptedException
- bei Unterbrechung- See Also:
-
isAlive
public boolean isAlive()Gibttrue
zurück, wenn der Task aktuell läuft -
isTerminated
public boolean isTerminated()Gibttrue
zurück, wenn der Task schon gelaufen ist und komplett terminiert wurde- Specified by:
isTerminated
in classTask
- Returns:
true
, wenn der Task schon gelaufen ist und komplett terminiert wurde, sonstfalse
-