public class MultiTaskManager extends QueueTask<ResultData>
Verwaltet eine Warteschlange und eine Liste von Tasks. Ein Auftrag aus der Warteschlage wird dem naechsten freien Task zugewiesen. Wenn kein Task frei ist, wartet der MultiTaskManager.
Modifier and Type | Field and Description |
---|---|
protected RingBuffer<MultiTask> |
freeTaskQueue |
protected java.util.ArrayList<MultiTask> |
taskList |
TERMINATE_TASK
_debug, _shouldTerminate, archMgr, didTree, INDEX_MEMORY_SIZE, persMgr
Constructor and Description |
---|
MultiTaskManager(ArchiveManager archiveMgr,
java.util.concurrent.BlockingQueue<java.lang.Object> inputData,
java.lang.String taskName) |
Modifier and Type | Method and Description |
---|---|
void |
addTask(MultiTask task)
Fuegt ein MultiTask hinzu und startet ihn, falls der MultitaskManager selbst schon gestartet ist.
|
void |
getObjectsFromDav()
Wird aufgerufen, sobald eine Datenverteilerverbindung verfügbar ist. kann benutzt werden, um Objekte zu laden und Anmeldungen durchzuführen.
|
int |
getTaskNum() |
void |
join()
Wartet auf das Beenden des Threads nach der Terminierung.
|
void |
pushFreeTask(MultiTask task)
Diese Methode wird von einem Task aufgerufen, wenn dieser Task mit der Bearbeitung eines Auftrages fertig ist und einen neuen Auftrag entgegennehmen kann.
|
void |
removeTask()
Entfernt einen Subtask aus der Liste der verfuegbaren Tasks.
|
void |
start() |
void |
terminateTask()
Terminiert den Task, indem die
#run() -Methode unterbrochen wird, sofern sie im Wartezustand ist und nicht gerade einen Auftrag bearbeitet. |
java.lang.String |
toString() |
protected void |
work(ResultData step) |
execute
addTaskStepListener, cleanUp, getArchMgr, getName, getState, isAlive, isTerminated, removeTaskStepListener, setName, shouldTerminate, suspendTaskIfNecessary, taskStepDone
protected RingBuffer<MultiTask> freeTaskQueue
protected final java.util.ArrayList<MultiTask> taskList
public MultiTaskManager(ArchiveManager archiveMgr, java.util.concurrent.BlockingQueue<java.lang.Object> inputData, java.lang.String taskName)
public void addTask(MultiTask task)
Fuegt ein MultiTask hinzu und startet ihn, falls der MultitaskManager selbst schon gestartet ist.
task
- public void removeTask()
Entfernt einen Subtask aus der Liste der verfuegbaren Tasks. Es verbleibt immer mindestens ein Task.
public int getTaskNum()
public void pushFreeTask(MultiTask task)
Diese Methode wird von einem Task aufgerufen, wenn dieser Task mit der Bearbeitung eines Auftrages fertig ist und einen neuen Auftrag entgegennehmen kann.
task
- protected void work(ResultData step) throws java.lang.InterruptedException
work
in class QueueTask<ResultData>
java.lang.InterruptedException
public void join() throws java.lang.InterruptedException
Task
Wartet auf das Beenden des Threads nach der Terminierung.
public java.lang.String toString()
toString
in class java.lang.Object
public void terminateTask()
QueueTask
Terminiert den Task, indem die #run()
-Methode unterbrochen wird, sofern sie im Wartezustand ist und nicht gerade einen Auftrag bearbeitet. Andernfalls wird der Task vor dem naechsten Zyklus beendet.
terminateTask
in class QueueTask<ResultData>
public void getObjectsFromDav()
Task
Wird aufgerufen, sobald eine Datenverteilerverbindung verfügbar ist. kann benutzt werden, um Objekte zu laden und Anmeldungen durchzuführen.
Wichtig: Diese Methode wird im Konstruktor ausgeführt und sollte daher nicht erwarten, dass die Subklasse (this
) vollständig initialisiert ist.
getObjectsFromDav
in class Task