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