de.bsvrz.ars.ars.mgmt.tasks
Class MultiTaskManager

java.lang.Object
  extended by java.lang.Thread
      extended by de.bsvrz.ars.ars.mgmt.tasks.Task
          extended by de.bsvrz.ars.ars.mgmt.tasks.MultiTaskManager
All Implemented Interfaces:
SuspendableTask, RingOfDeathListener, Runnable

public class MultiTaskManager
extends Task
implements RingOfDeathListener

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.

Author:
beck et al. projects GmbH, Alexander Schmidt

Nested Class Summary
 
Nested classes/interfaces inherited from class java.lang.Thread
Thread.State, Thread.UncaughtExceptionHandler
 
Field Summary
protected  RingBuffer<MultiTask> freeTaskQueue
           
protected  RingBuffer<ResultData> inputDataQueue
           
protected  ArrayList<MultiTask> taskList
           
 
Fields inherited from class de.bsvrz.ars.ars.mgmt.tasks.Task
archMgr, didTree, INDEX_MEMORY_SIZE, isTerminated, logger, persMgr, ringOfDeathListener, taskStepListeners
 
Fields inherited from class java.lang.Thread
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
 
Constructor Summary
MultiTaskManager(ArchiveManager archiveMgr, RingOfDeathListener rodl, RingBuffer<ResultData> inputData, String taskName)
           
 
Method Summary
 void addTask(MultiTask task)
          Fuegt ein MultiTask hinzu und startet ihn, falls der MultitaskManager selbst schon gestartet ist.
 int getTaskNum()
           
 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 ringOfDeath(Task doomedTask)
          Wird von einem Task vor dem Verlassen der Hauptschleife aufgerufen, wenn dem Task dieses Interface im Konstruktor uebergeben wurde..
 void run()
           
 void start()
           
 String toString()
           
 
Methods inherited from class de.bsvrz.ars.ars.mgmt.tasks.Task
addTaskStepListener, getArchMgr, isTaskTerminated, removeTaskStepListener, suspendTaskIfNecessary, terminateTask
 
Methods inherited from class java.lang.Thread
activeCount, checkAccess, clone, countStackFrames, currentThread, destroy, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, stop, stop, suspend, yield
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

inputDataQueue

protected RingBuffer<ResultData> inputDataQueue

freeTaskQueue

protected RingBuffer<MultiTask> freeTaskQueue

taskList

protected ArrayList<MultiTask> taskList
Constructor Detail

MultiTaskManager

public MultiTaskManager(ArchiveManager archiveMgr,
                        RingOfDeathListener rodl,
                        RingBuffer<ResultData> inputData,
                        String taskName)
Method Detail

start

public void start()
Overrides:
start in class Thread

addTask

public void addTask(MultiTask task)
Fuegt ein MultiTask hinzu und startet ihn, falls der MultitaskManager selbst schon gestartet ist.

Parameters:
task -
Throws:
ConfigurationException

removeTask

public void removeTask()
Entfernt einen Subtask aus der Liste der verfuegbaren Tasks. Es verbleibt immer mindestens ein Task.


getTaskNum

public int getTaskNum()

pushFreeTask

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.

Parameters:
task -

run

public void run()
Specified by:
run in interface Runnable
Overrides:
run in class Thread

ringOfDeath

public void ringOfDeath(Task doomedTask)
Description copied from interface: RingOfDeathListener
Wird von einem Task vor dem Verlassen der Hauptschleife aufgerufen, wenn dem Task dieses Interface im Konstruktor uebergeben wurde..

Specified by:
ringOfDeath in interface RingOfDeathListener
Parameters:
doomedTask - Task, der gerade beendet wird

toString

public String toString()
Overrides:
toString in class Thread