de.bsvrz.sys.funclib.concurrent
Class BufferedQueue<E>
java.lang.Object
de.bsvrz.sys.funclib.concurrent.BufferedQueue<E>
public class BufferedQueue<E>
- extends Object
Queue zum Austausch von Nachrichten zwischen Threads. Mit der Methode put(E)
können beliebige Objekte
(Nachrichten) in die Queue eingetragen (gesendet) werden und i.a. von einem anderen Thread mit den Methode take()
aus der Queue entnommen (empfangen) werden. Die Anzahl der Nachrichten in der Queue ist
beschränkt. Die Nachrichten werden in der Reihenfolge empfangen in der sie versendet wurden (first in first
out, FIFO). Gesendete Nachrichten stehen erst dann empfangsseitig zur Verfügung, wenn die halbe Kapizität der Queue
erreicht ist oder die Methode flush()
aufgerufen wurde.
- Author:
- Kappich Systemberatung
Method Summary |
void |
flush()
|
void |
put(E message)
Sendet eine Nachricht in die Queue. |
E |
take()
Empfängt und entfernt eine Nachricht aus der Queue. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
_putObjects
private Object[] _putObjects
_takeObjects
private Object[] _takeObjects
_putIndex
private int _putIndex
_takeIndex
private int _takeIndex
_takeLimit
private int _takeLimit
_capacity
private final int _capacity
_transferLock
private final Object _transferLock
_transferSize
private int _transferSize
_transferObjects
private Object[] _transferObjects
_recycleArray
private Object[] _recycleArray
BufferedQueue
public BufferedQueue(int capacity)
flush
public void flush()
throws InterruptedException
- Throws:
InterruptedException
put
public void put(E message)
throws InterruptedException
- Sendet eine Nachricht in die Queue.
- Parameters:
message
- Zu versendende Nachricht.
- Throws:
InterruptedException
take
public E take()
throws InterruptedException
- Empfängt und entfernt eine Nachricht aus der Queue. Wenn die Queue leer ist, dann wartet die Methode, bis eine
Nachricht in die Queue gesendet wurde. Wenn mehrere Nachrichten in der Queue vorhanden sind, wird die Nachricht
empfangen und entfernt, die als erstes in die Queue gesendet wurde.
- Returns:
- Empfangene Nachricht.
- Throws:
InterruptedException
- Wenn der Thread unterbrochen wurde während auf Nachrichten gewartet wurde.