Package de.bsvrz.sys.funclib.concurrent
Class UnboundedQueue<E>
- java.lang.Object
-
- de.bsvrz.sys.funclib.concurrent.UnboundedQueue<E>
-
public final class UnboundedQueue<E> extends java.lang.Object
Queue zum Austausch von Nachrichten zwischen Threads. Mit der Methodeput(E)
können beliebige Objekte (Nachrichten) in die Queue eingetragen (gesendet) werden und i.a. von einem anderen Thread mit den Methodentake()
oderpoll(long)
aus der Queue entnommen (empfangen) werden. Die generische Queue kann durch Angabe eines Typs auf diesen bestimmten Objekttypen arbeiten. Die Anzahl der Nachrichten in der Queue ist nicht beschränkt. Die Nachrichten werden in der Reihenfolge empfangen in der sie versendet wurden (first in first out, FIFO).
-
-
Constructor Summary
Constructors Constructor Description UnboundedQueue()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description E
poll(long timeout)
Empfängt und entfernt eine Nachricht aus der Queue.void
put(E message)
Sendet eine Nachricht an die Queue.int
size()
Bestimmt die Größe dieser Queue.E
take()
Empfängt und entfernt eine Nachricht aus der Queue.
-
-
-
Method Detail
-
put
public void put(E message)
Sendet eine Nachricht an die Queue.- Parameters:
message
- Zu versendende Nachricht.
-
take
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.- Returns:
- Empfangene Nachricht.
- Throws:
java.lang.InterruptedException
- Wenn der Thread unterbrochen wurde während auf Nachrichten gewartet wurde.
-
poll
public E poll(long timeout) 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 oder bis die angegebene Zeit verstrichen ist. Wenn mehrere Nachrichten in der Queue vorhanden sind, wird diejenige Nachricht empfangen und entfernt, die als erstes in die Queue gesendet wurde.- Parameters:
timeout
- Zeit in Millisekunden, für die bei leerer Queue auf neue Nachrichten gewartet wird.- Returns:
- Empfangene Nachricht oder
null
, wenn nach Ablauf des Timeouts immer noch keine Nachricht in der Queue vorhanden ist. - Throws:
java.lang.InterruptedException
- Wenn der Thread unterbrochen wurde während auf Nachrichten gewartet wurde.
-
size
public int size()
Bestimmt die Größe dieser Queue.- Returns:
- Anzahl verbleibender Elemente in dieser Queue.
-
-