Klasse QueueTask<T>

Bekannte direkte Unterklassen:
ArchivConfig, DeletePermanentlyTask, MultiTask, MultiTaskManager, SerializeTask, SingleTask

public abstract class QueueTask<T> extends RepeatingTask
Abstrakte Basisklasse für die abstrakten Task-Basisklassen SingleTask und MultiTask.

Ein QueueTask ist ein Thread, der laufend eine bestimmte Aktion ausführt. Er ähnelt einem Executors.newSingleThreadExecutor(), die einzelnen Aufgaben werden aber nicht als Runnable o.ä. übergeben, sondern der Task holt sich selbst die durchzuführenden Arbeitsschritte aus einer Queue. Die Klasse, auf der ein Task arbeitet wird über den generischen Typ T definiert.

  • Konstruktordetails

  • Methodendetails

    • submit

      public void submit(@NotNull T step)
      Fügt einen abzuarbeitenden Auftrag in die Queue ein.
      Parameter:
      step - Datensatz
    • terminateTask

      public void terminateTask()
      Terminiert den Task. Diese Methode fügt zusätzlich in die Queue einen speziellen Token ein, mit dem der Aufruf von _queue.take() in der step()-Methode aufgeweckt wird, falls die Methode dort gerade auf einen neuen Auftrag warten.
      Setzt außer Kraft:
      terminateTask in Klasse Task
    • step

      public final void step() throws InterruptedException
      Beschreibung aus Klasse kopiert: RepeatingTask
      Implementiert die beliebige wiederholt auszuführende Aufgabe
      Angegeben von:
      step in Klasse RepeatingTask
      Löst aus:
      InterruptedException - Thread unterbrochen
    • work

      protected abstract void work(T step) throws InterruptedException
      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
      Parameter:
      step - Auftrag/Arbeitsschritt
      Löst aus:
      InterruptedException - Thread unterbrochen