public class

AsyncEventQueue

extends Object
java.lang.Object
   ↳ com.pnfsoftware.jeb.util.collect.AsyncEventQueue<E>
Known Direct Subclasses

Class Overview

Highly efficient, loosely bounded concurrent pseudo-queue for single-reader/multiple-writers scenarios. The implementation relies on ConcurrentLinkedQueue.

If the bound is reached, newest elements are dropped. To achieve high write efficiency and avoid locking, the queue is loosely bounded: under certain conditions, elements may be dropped although the queue did not reach its capacity; conversely, elements may be added although the queue reached its capacity. To lift this uncertainty, use a bound of MAX_VALUE. The writers should never never pull elements. Null elements are illegal.

Summary

Public Constructors
AsyncEventQueue()
Create an unbounded queue.
AsyncEventQueue(int capacity)
Create a queue, optionally bounded.
Public Methods
boolean add(E e)
Add to the tail of the queue.
void clear()
boolean isEmpty()
E pull()
Pull the head, unless the queue is empty, in which case null is returned.
List<E> pullAll()
Pull all elements.
List<E> readAll()
int size()
String toString()
[Expand]
Inherited Methods
From class java.lang.Object

Public Constructors

public AsyncEventQueue ()

Create an unbounded queue.

public AsyncEventQueue (int capacity)

Create a queue, optionally bounded.

Public Methods

public boolean add (E e)

Add to the tail of the queue.

Parameters
e non-null entry to be enqueued
Returns
  • true if the element was added, false if it was dropped

public void clear ()

public boolean isEmpty ()

public E pull ()

Pull the head, unless the queue is empty, in which case null is returned.

Returns
  • the head or null

public List<E> pullAll ()

Pull all elements.

public List<E> readAll ()

public int size ()

public String toString ()