public class BufferedQueue<E> extends Object
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.Modifier and Type | Field and Description |
---|---|
private int |
_capacity |
private int |
_putIndex |
private Object[] |
_putObjects |
private Object[] |
_recycleArray |
private int |
_takeIndex |
private int |
_takeLimit |
private Object[] |
_takeObjects |
private Object |
_transferLock |
private Object[] |
_transferObjects |
private int |
_transferSize |
Constructor and Description |
---|
BufferedQueue(int capacity) |
private Object[] _putObjects
private Object[] _takeObjects
private int _putIndex
private int _takeIndex
private int _takeLimit
private final int _capacity
private final Object _transferLock
private int _transferSize
private Object[] _transferObjects
private Object[] _recycleArray
public void flush() throws InterruptedException
InterruptedException
public void put(E message) throws InterruptedException
message
- Zu versendende Nachricht.InterruptedException
public E take() throws InterruptedException
InterruptedException
- Wenn der Thread unterbrochen wurde während auf Nachrichten gewartet wurde.