org.eclipse.jetty.util
Class BlockingArrayQueue<E>
java.lang.Object
java.util.AbstractCollection<E>
java.util.AbstractList<E>
org.eclipse.jetty.util.BlockingArrayQueue<E>
- Type Parameters:
E
- The element type
- All Implemented Interfaces:
- Iterable<E>, Collection<E>, BlockingQueue<E>, List<E>, Queue<E>
public class BlockingArrayQueue<E>
- extends AbstractList<E>
- implements BlockingQueue<E>
Queue backed by a circular array.
This queue is uses a variant of the two lock queue algorithm to
provide an efficient queue or list backed by a growable circular
array. This queue also has a partial implementation of
BlockingQueue
, specifically the take()
and
poll(long, TimeUnit)
methods.
Unlike ArrayBlockingQueue
, this class is
able to grow and provides a blocking put call.
The queue has both a capacity (the size of the array currently allocated)
and a limit (the maximum size that may be allocated), which defaults to
Integer.MAX_VALUE
.
DEFAULT_CAPACITY
public final int DEFAULT_CAPACITY
- See Also:
- Constant Field Values
DEFAULT_GROWTH
public final int DEFAULT_GROWTH
- See Also:
- Constant Field Values
BlockingArrayQueue
public BlockingArrayQueue()
- Create a growing partially blocking Queue
BlockingArrayQueue
public BlockingArrayQueue(int limit)
- Create a fixed size partially blocking Queue
- Parameters:
limit
- The initial capacity and the limit.
BlockingArrayQueue
public BlockingArrayQueue(int capacity,
int growBy)
- Create a growing partially blocking Queue.
- Parameters:
capacity
- Initial capacitygrowBy
- Incremental capacity.
BlockingArrayQueue
public BlockingArrayQueue(int capacity,
int growBy,
int limit)
- Create a growing limited partially blocking Queue.
- Parameters:
capacity
- Initial capacitygrowBy
- Incremental capacity.limit
- maximum capacity.
getCapacity
public int getCapacity()
getLimit
public int getLimit()
add
public boolean add(E e)
- Specified by:
add
in interface Collection<E>
- Specified by:
add
in interface BlockingQueue<E>
- Specified by:
add
in interface List<E>
- Specified by:
add
in interface Queue<E>
- Overrides:
add
in class AbstractList<E>
element
public E element()
- Specified by:
element
in interface Queue<E>
peek
public E peek()
- Specified by:
peek
in interface Queue<E>
offer
public boolean offer(E e)
- Specified by:
offer
in interface BlockingQueue<E>
- Specified by:
offer
in interface Queue<E>
poll
public E poll()
- Specified by:
poll
in interface Queue<E>
take
public E take()
throws InterruptedException
- Retrieves and removes the head of this queue, waiting
if no elements are present on this queue.
- Specified by:
take
in interface BlockingQueue<E>
- Returns:
- the head of this queue
- Throws:
InterruptedException
- if interrupted while waiting.
poll
public E poll(long time,
TimeUnit unit)
throws InterruptedException
- Retrieves and removes the head of this queue, waiting
if necessary up to the specified wait time if no elements are
present on this queue.
- Specified by:
poll
in interface BlockingQueue<E>
- Parameters:
time
- how long to wait before giving up, in units of
unitunit
- a TimeUnit determining how to interpret the
timeout parameter
- Returns:
- the head of this queue, or null if the
specified waiting time elapses before an element is present.
- Throws:
InterruptedException
- if interrupted while waiting.
remove
public E remove()
- Specified by:
remove
in interface Queue<E>
clear
public void clear()
- Specified by:
clear
in interface Collection<E>
- Specified by:
clear
in interface List<E>
- Overrides:
clear
in class AbstractList<E>
isEmpty
public boolean isEmpty()
- Specified by:
isEmpty
in interface Collection<E>
- Specified by:
isEmpty
in interface List<E>
- Overrides:
isEmpty
in class AbstractCollection<E>
size
public int size()
- Specified by:
size
in interface Collection<E>
- Specified by:
size
in interface List<E>
- Specified by:
size
in class AbstractCollection<E>
get
public E get(int index)
- Specified by:
get
in interface List<E>
- Specified by:
get
in class AbstractList<E>
remove
public E remove(int index)
- Specified by:
remove
in interface List<E>
- Overrides:
remove
in class AbstractList<E>
set
public E set(int index,
E e)
- Specified by:
set
in interface List<E>
- Overrides:
set
in class AbstractList<E>
add
public void add(int index,
E e)
- Specified by:
add
in interface List<E>
- Overrides:
add
in class AbstractList<E>
drainTo
public int drainTo(Collection<? super E> c)
- Specified by:
drainTo
in interface BlockingQueue<E>
drainTo
public int drainTo(Collection<? super E> c,
int maxElements)
- Specified by:
drainTo
in interface BlockingQueue<E>
offer
public boolean offer(E o,
long timeout,
TimeUnit unit)
throws InterruptedException
- Specified by:
offer
in interface BlockingQueue<E>
- Throws:
InterruptedException
put
public void put(E o)
throws InterruptedException
- Specified by:
put
in interface BlockingQueue<E>
- Throws:
InterruptedException
remainingCapacity
public int remainingCapacity()
- Specified by:
remainingCapacity
in interface BlockingQueue<E>
Copyright © 1995-2011 Mort Bay Consulting. All Rights Reserved.