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.
| Modifier and Type | Field and Description |
|---|---|
private RingBuffer<java.lang.Object> |
_queue |
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) |
executeaddTaskStepListener, cleanUp, getArchMgr, getName, getObjectsFromDav, getState, isAlive, isTerminated, join, removeTaskStepListener, setName, shouldTerminate, start, suspendTaskIfNecessary, taskStepDoneprivate final RingBuffer<java.lang.Object> _queue
protected RingBufferTask(ArchiveManager archiveMgr, RingBuffer<java.lang.Object> queue)
public boolean submit(@NotNull T step) throws java.lang.InterruptedException
java.lang.InterruptedExceptionpublic 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 Taskpublic void step()
throws java.lang.InterruptedException
step in class RepeatingTaskjava.lang.InterruptedExceptionprotected abstract void work(T step) throws java.lang.InterruptedException
java.lang.InterruptedExceptionpublic RingBuffer<java.lang.Object> getQueue()