de.bsvrz.sys.funclib.concurrent
Class UnboundedQueue<E>

java.lang.Object
  extended by de.bsvrz.sys.funclib.concurrent.UnboundedQueue<E>

public class UnboundedQueue<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 Methoden take() oder poll(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).

Author:
Kappich Systemberatung

Field Summary
private  LinkedList<E> _list
           
 
Constructor Summary
UnboundedQueue()
           
 
Method Summary
 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.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

_list

private final LinkedList<E> _list
Constructor Detail

UnboundedQueue

public UnboundedQueue()
Method Detail

put

public void put(E message)
Sendet eine Nachricht an die Queue.

Parameters:
message - Zu versendende Nachricht.

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.

poll

public E poll(long timeout)
       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 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:
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.