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 |
|---|---|
private java.util.concurrent.atomic.AtomicInteger |
adjustTaskNumFactor
So viele Tasks sind beim naechsten Durchlauf zu entfernen
|
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) |
executeaddTaskStepListener, cleanUp, getArchMgr, getName, getState, isAlive, isTerminated, removeTaskStepListener, setName, shouldTerminate, suspendTaskIfNecessary, taskStepDoneprotected RingBuffer<MultiTask> freeTaskQueue
protected final java.util.ArrayList<MultiTask> taskList
private java.util.concurrent.atomic.AtomicInteger adjustTaskNumFactor
So viele Tasks sind beim naechsten Durchlauf zu entfernen
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.InterruptedExceptionpublic void join()
throws java.lang.InterruptedException
TaskWartet auf das Beenden des Threads nach der Terminierung.
public java.lang.String toString()
toString in class java.lang.Objectpublic void terminateTask()
QueueTaskTerminiert 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()
TaskWird 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