Package de.bsvrz.ars.ars.mgmt.tasks
Class MultiTaskManager
java.lang.Object
de.bsvrz.ars.ars.mgmt.tasks.Task
de.bsvrz.ars.ars.mgmt.tasks.AbstractTask
de.bsvrz.ars.ars.mgmt.tasks.RepeatingTask
de.bsvrz.ars.ars.mgmt.tasks.QueueTask<de.bsvrz.dav.daf.main.ResultData>
de.bsvrz.ars.ars.mgmt.tasks.MultiTaskManager
Verwaltet eine Warteschlange und eine Liste von Tasks. Ein Auftrag aus der Warteschlage wird dem nächsten freien Task zugewiesen. Wenn kein Task frei ist,
wartet der MultiTaskManager.
-
Field Summary
Fields inherited from class de.bsvrz.ars.ars.mgmt.tasks.Task
_debug, _shouldTerminate -
Constructor Summary
ConstructorsConstructorDescriptionMultiTaskManager(ArchiveManager archiveMgr, SignalingQueue<de.bsvrz.dav.daf.main.ResultData> inputData, String taskName) Erstellt einen neuen MultiTaskManager -
Method Summary
Modifier and TypeMethodDescriptionvoidFuegt ein MultiTask hinzu und startet ihn, falls der MultitaskManager selbst schon gestartet ist.protected voidcleanUp()Wird garantiert aufgerufen, nachdem der Task vollständig terminiert wurde.voidintGibt die Anzahl der aktuell verwalteten Sub-Tasks zurückbooleanisAlive()Gibttruezurück, wenn der Task aktuell läuftvoidjoin()Wartet auf das Beenden des Tasks nach der Terminierung.voidEntfernt einen Subtask aus der Liste der verfuegbaren Tasks.voidstart()Startet den Thread, der den Task ausführttoString()protected voidwork(de.bsvrz.dav.daf.main.ResultData step) Vom konkreten Task zu implementierende Methode, die den Auftrag abarbeitet.Methods inherited from class de.bsvrz.ars.ars.mgmt.tasks.QueueTask
step, submit, terminateTaskMethods inherited from class de.bsvrz.ars.ars.mgmt.tasks.RepeatingTask
execute, getArchMgrMethods inherited from class de.bsvrz.ars.ars.mgmt.tasks.AbstractTask
addTaskStepListener, getName, getState, isTerminated, removeTaskStepListener, setName, taskStepDoneMethods inherited from class de.bsvrz.ars.ars.mgmt.tasks.Task
getDidTree, getPersistenceManager, shouldTerminate, suspendTaskIfNecessary
-
Constructor Details
-
MultiTaskManager
public MultiTaskManager(ArchiveManager archiveMgr, SignalingQueue<de.bsvrz.dav.daf.main.ResultData> inputData, String taskName) Erstellt einen neuen MultiTaskManager- Parameters:
archiveMgr- Archiv-ManagerinputData- Queue, in die von einem anderne THread zu verarbeitende Daten eingefügt werdentaskName- Name
-
-
Method Details
-
start
public void start()Description copied from class:AbstractTaskStartet den Thread, der den Task ausführt- Overrides:
startin classAbstractTask- See Also:
-
addTask
Fuegt ein MultiTask hinzu und startet ihn, falls der MultitaskManager selbst schon gestartet ist.- Parameters:
task- Kind-Task
-
removeTask
public void removeTask()Entfernt einen Subtask aus der Liste der verfuegbaren Tasks. Es verbleibt immer mindestens ein Task. -
getTaskNum
public int getTaskNum()Gibt die Anzahl der aktuell verwalteten Sub-Tasks zurück- Returns:
- Anzahl
-
cleanUp
protected void cleanUp()Description copied from class:AbstractTaskWird 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.
- Overrides:
cleanUpin classAbstractTask
-
work
Description copied from class:QueueTaskVom konkreten Task zu implementierende Methode, die den Auftrag abarbeitet. Diese Methode sollte nur Intern aufgerufen werden, ist für Testfälle aber public. Normalerweise sollten Aufträge aber Asynchron mit submit() übergeben werden- Specified by:
workin classQueueTask<de.bsvrz.dav.daf.main.ResultData>- Parameters:
step- Auftrag/Arbeitsschritt- Throws:
InterruptedException- Thread unterbrochen
-
join
Description copied from class:AbstractTaskWartet 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- Overrides:
joinin classAbstractTask- Throws:
InterruptedException- bei Unterbrechung- See Also:
-
toString
-
isAlive
public boolean isAlive()Description copied from class:AbstractTaskGibttruezurück, wenn der Task aktuell läuft- Overrides:
isAlivein classAbstractTask- Returns:
true, wenn der Task aktuell läuft, sonstfalse
-
getObjectsFromDav
public void getObjectsFromDav()
-