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 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).
  • Constructor Summary

    Constructors
    Constructor Description
    UnboundedQueue()  
  • Method Summary

    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.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • UnboundedQueue

      public UnboundedQueue()
  • Method Details

    • 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.