Package de.bsvrz.ars.ars.mgmt.tasks
Class QueueTask<T>
java.lang.Object
de.bsvrz.ars.ars.mgmt.tasks.AbstractTask
de.bsvrz.ars.ars.mgmt.tasks.Task
de.bsvrz.ars.ars.mgmt.tasks.RepeatingTask
de.bsvrz.ars.ars.mgmt.tasks.QueueTask<T>
- Direct Known Subclasses:
ArchivConfig,MultiTask,MultiTaskManager,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.
-
Field Summary
Fields inherited from class de.bsvrz.ars.ars.mgmt.tasks.RepeatingTask
TERMINATE_TASKFields inherited from class de.bsvrz.ars.ars.mgmt.tasks.AbstractTask
_debug, _shouldTerminate, archMgr, didTree, persMgr -
Constructor Summary
Constructors Modifier Constructor Description protectedQueueTask(ArchiveManager archiveMgr, java.util.concurrent.BlockingQueue<java.lang.Object> queue) -
Method Summary
Modifier and Type Method Description booleanoffer(T step)Fügt einen abzuarbeitenden Auftrag in die Queue ein, wenn das möglich ist.voidstep()Implementiert die beliebige wiederholt auszuführende Aufgabevoidsubmit(T step)Fügt einen abzuarbeitenden Auftrag in die Queue ein.voidterminateTask()Terminiert den Task.protected abstract voidwork(T step)Vom konkreten Task zu implementierende Methode, die den Auftrag abarbeitetMethods inherited from class de.bsvrz.ars.ars.mgmt.tasks.RepeatingTask
executeMethods inherited from class de.bsvrz.ars.ars.mgmt.tasks.Task
addTaskStepListener, cleanUp, getName, getState, isAlive, isTerminated, join, removeTaskStepListener, setName, start, taskStepDoneMethods inherited from class de.bsvrz.ars.ars.mgmt.tasks.AbstractTask
getArchMgr, getObjectsFromDav, shouldTerminate, suspendTaskIfNecessaryMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Constructor Details
-
QueueTask
protected QueueTask(ArchiveManager archiveMgr, java.util.concurrent.BlockingQueue<java.lang.Object> queue)
-
-
Method Details
-
submit
Fügt einen abzuarbeitenden Auftrag in die Queue ein.- Parameters:
step- Datensatz- Throws:
java.lang.InterruptedException- Thread unterbrochen
-
offer
Fügt einen abzuarbeitenden Auftrag in die Queue ein, wenn das möglich ist.- Parameters:
step- Datensatz- Returns:
- true wenn eingefügt wurde, sonst false
- Throws:
java.lang.InterruptedException- Thread unterbrochen
-
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 derstep()-Methode aufgeweckt wird, falls die Methode dort gerade auf einen neuen Auftrag warten.- Overrides:
terminateTaskin classAbstractTask
-
step
public final void step() throws java.lang.InterruptedExceptionDescription copied from class:RepeatingTaskImplementiert die beliebige wiederholt auszuführende Aufgabe- Specified by:
stepin classRepeatingTask- Throws:
java.lang.InterruptedException- Thread unterbrochen
-
work
Vom konkreten Task zu implementierende Methode, die den Auftrag abarbeitet- Parameters:
step- Auftrag/Arbeitsschritt- Throws:
java.lang.InterruptedException- Thread unterbrochen
-