public abstract class RingBufferTask<T> extends RepeatingTask
Abstrakte Basisklasse für die abstrakten Task-Basisklassen SingleTask
und MultiTask
.
Ein Task ist ein Thread, der laufend eine bestimmte Aktion ausführt. Er ähnelt einem Executors.newSingleThreadExecutor()
, die einzelnen Aufgaben werden aber (unter anderem) aus historischen Gründen nicht als Runnable o.ä. übergeben, sondern der Task holt sich selbst die durchzuführenden Arbeitsschritte aus einer Queue oder einem Ringpuffer. Die Klasse, auf der ein Task arbeitet wird über den generischen Typ T definiert.
TERMINATE_TASK
_debug, _shouldTerminate, archMgr, didTree, INDEX_MEMORY_SIZE, persMgr
Modifier | Constructor and Description |
---|---|
protected |
RingBufferTask(ArchiveManager archiveMgr,
RingBuffer<java.lang.Object> queue) |
Modifier and Type | Method and Description |
---|---|
RingBuffer<java.lang.Object> |
getQueue() |
void |
step() |
boolean |
submit(T step) |
void |
terminateTask()
Terminiert den Task, indem die
#run() -Methode unterbrochen wird, sofern sie im Wartezustand ist und nicht gerade einen Auftrag bearbeitet. |
protected abstract void |
work(T step) |
execute
addTaskStepListener, cleanUp, getArchMgr, getName, getObjectsFromDav, getState, isAlive, isTerminated, join, removeTaskStepListener, setName, shouldTerminate, start, suspendTaskIfNecessary, taskStepDone
protected RingBufferTask(ArchiveManager archiveMgr, RingBuffer<java.lang.Object> queue)
public boolean submit(@NotNull T step) throws java.lang.InterruptedException
java.lang.InterruptedException
public void terminateTask()
Terminiert 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 Task
public void step() throws java.lang.InterruptedException
step
in class RepeatingTask
java.lang.InterruptedException
protected abstract void work(T step) throws java.lang.InterruptedException
java.lang.InterruptedException
public RingBuffer<java.lang.Object> getQueue()