public class ArchiveRingBuffer extends RingBuffer<ArchiveRingBuffer.PopObject>
Diese Klasse führt einen zweiten Ringpuffer, um neben dem einzufügenden Objekt auch den Einfügezeitpunkt festzuhalten (für die Archivzeit). Sinn dieser Klasse ist es, staendiges erzeugen und loeschen von Objekten zu vermeiden. Dies wäre der Fall, wenn man jedesmal ein Objekt erzeugt, das das Wertepaar enthält.
Modifier and Type | Class and Description |
---|---|
class |
ArchiveRingBuffer.PopObject
Mit dieser Klasse kann man Paare in einem Aufruf aus dem Ringpuffer poppen.
|
Modifier and Type | Field and Description |
---|---|
private long[] |
timeBuf |
buf, chunkSize, firstElem, isEmpty, lastElem, maxSize, MIN_CHUNK_SIZE, noOfChunks, UNBOUNDED_SIZE
Constructor and Description |
---|
ArchiveRingBuffer(int chunkSize,
int mxsize) |
Modifier and Type | Method and Description |
---|---|
protected void |
copy2NewArray(int newSize) |
void |
pop(ArchiveRingBuffer.PopObject pobj)
Fügt die ersten Element der beiden Warteschlange in das uebergebene PopObject ein.
|
boolean |
push(java.lang.Object elem,
long time,
long timeout)
Fügt ein Objekt in die Warteschlange an letzter Stelle ein.
|
adjustSizePostDecr, adjustSizePreIncr, changeMaxSize, getLast, isEmpty, isFirstElemOneAheadOfLastElem, isFull, maxSize, next, oneStepFurther, peek, pop, pop, popNoWait, push, size, status, toArray
public ArchiveRingBuffer(int chunkSize, int mxsize)
chunkSize:
- Größe der Blöcke, um die das Feld der Warteschlange wächst und schrumpft.mxSize:
- Maximale Groesse der Warteschlange. Wird diese ueberschritten, liefert #push(E)
falsepublic boolean push(java.lang.Object elem, long time, long timeout) throws java.lang.InterruptedException
Fügt ein Objekt in die Warteschlange an letzter Stelle ein. Ein Thread, der in pop() wartet, wird fortgesetzt.
elem:
- Einzufügendes Objekttime:
- Einfügezeitpunktjava.lang.InterruptedException
public void pop(ArchiveRingBuffer.PopObject pobj) throws java.lang.InterruptedException
Fügt die ersten Element der beiden Warteschlange in das uebergebene PopObject ein. Dieses Objekt muss vorher angelegt worden sein und wird nur zur Uebergabe der beiden Werte verwendet. Wenn die Warteschlange leer ist, blockiert der aufrufende Thread bis zum nächsten pop()-Aufruf.
pobj:
- vorher zu erzeugendes Objekt zur Übergabe der Werte.java.lang.InterruptedException
protected void copy2NewArray(int newSize)
copy2NewArray
in class RingBuffer<ArchiveRingBuffer.PopObject>