Klasse MultiTaskManager


public final class MultiTaskManager extends QueueTask<de.bsvrz.dav.daf.main.ResultData>
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.
  • Konstruktordetails

    • MultiTaskManager

      public MultiTaskManager(ArchiveManager archiveMgr, SignalingQueue<de.bsvrz.dav.daf.main.ResultData> inputData, String taskName)
      Erstellt einen neuen MultiTaskManager
      Parameter:
      archiveMgr - Archiv-Manager
      inputData - Queue, in die von einem anderne THread zu verarbeitende Daten eingefügt werden
      taskName - Name
  • Methodendetails

    • start

      public void start()
      Beschreibung aus Klasse kopiert: AbstractTask
      Startet den Thread, der den Task ausführt
      Setzt außer Kraft:
      start in Klasse AbstractTask
      Siehe auch:
    • addTask

      public void addTask(MultiTask task)
      Fuegt ein MultiTask hinzu und startet ihn, falls der MultitaskManager selbst schon gestartet ist.
      Parameter:
      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
      Gibt zurück:
      Anzahl
    • cleanUp

      protected void cleanUp()
      Beschreibung aus Klasse kopiert: AbstractTask
      Wird garantiert aufgerufen, nachdem der Task vollständig terminiert wurde. Dieser Code wird im selben Thread ausgeführt, wie der eigentliche Task

      Tut standardmäßig nichts, kann überschrieben werden um Daten aufzuräumen, Abmeldungen durchzuführen usw.

      Setzt außer Kraft:
      cleanUp in Klasse AbstractTask
    • work

      protected void work(de.bsvrz.dav.daf.main.ResultData step) throws InterruptedException
      Beschreibung aus Klasse kopiert: QueueTask
      Vom 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
      Angegeben von:
      work in Klasse QueueTask<de.bsvrz.dav.daf.main.ResultData>
      Parameter:
      step - Auftrag/Arbeitsschritt
      Löst aus:
      InterruptedException - Thread unterbrochen
    • join

      public void join() throws InterruptedException
      Beschreibung aus Klasse kopiert: AbstractTask
      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
       
      Setzt außer Kraft:
      join in Klasse AbstractTask
      Löst aus:
      InterruptedException - bei Unterbrechung
      Siehe auch:
    • toString

      public String toString()
      Setzt außer Kraft:
      toString in Klasse Object
    • isAlive

      public boolean isAlive()
      Beschreibung aus Klasse kopiert: AbstractTask
      Gibt true zurück, wenn der Task aktuell läuft
      Setzt außer Kraft:
      isAlive in Klasse AbstractTask
      Gibt zurück:
      true, wenn der Task aktuell läuft, sonst false
    • getObjectsFromDav

      public void getObjectsFromDav()