org.jgroups.util
Class Queue
public class Queue
extends java.lang.Object
Elements are added at the tail and removed from the head. Class is thread-safe in that
1 producer and 1 consumer may add/remove elements concurrently. The class is not
explicitely designed for multiple producers or consumers. Implemented as a linked
list, so that removal of an element at the head does not cause a right-shift of the
remaining elements (as in a Vector-based implementation).
Queue() - creates an empty queue
|
void | add(Object obj) - adds an object to the tail of this queue
If the queue has been closed with close(true) no exception will be
thrown if the queue has not been flushed yet.
|
void | addAtHead(Object obj) - Adds a new object to the head of the queue
basically (obj.equals(queue.remove(queue.add(obj)))) returns true
If the queue has been closed with close(true) no exception will be
thrown if the queue has not been flushed yet.
|
void | close(boolean flush_entries) - Marks the queues as closed.
|
boolean | closed() - returns true if the Queue has been closed
however, this method will return false if the queue has been closed
using the close(true) method and the last element has yet not been received.
|
String | debug() - Dumps internal state @remove
|
Vector | getContents() - returns a vector with all the objects currently in the queue
|
Object | getFirst() - Returns the first element.
|
Object | getLast() - Returns the last element.
|
Object | peek() - returns the first object on the queue, without removing it.
|
Object | peek(long timeout) - returns the first object on the queue, without removing it.
|
Object | remove() - Removes 1 element from head or blocks
until next element has been added or until queue has been closed
|
Object | remove(long timeout) - Removes 1 element from the head.
|
void | removeElement(Object obj) - removes a specific object from the queue.
|
void | reset() - resets the queue.
|
int | size() - returns the number of objects that are currently in the queue
|
String | toString() - prints the size of the queue
|
log
protected static Log log
Queue
public Queue()
creates an empty queue
add
public void add(Object obj)
throws QueueClosedException
adds an object to the tail of this queue
If the queue has been closed with close(true) no exception will be
thrown if the queue has not been flushed yet.
obj
- - the object to be added to the queue
addAtHead
public void addAtHead(Object obj)
throws QueueClosedException
Adds a new object to the head of the queue
basically (obj.equals(queue.remove(queue.add(obj)))) returns true
If the queue has been closed with close(true) no exception will be
thrown if the queue has not been flushed yet.
obj
- - the object to be added to the queue
close
public void close(boolean flush_entries)
Marks the queues as closed. When an add
or remove
operation is
attempted on a closed queue, an exception is thrown.
flush_entries
- When true, a end-of-entries marker is added to the end of the queue.
Entries may be added and removed, but when the end-of-entries marker
is encountered, the queue is marked as closed. This allows to flush
pending messages before closing the queue.
closed
public boolean closed()
returns true if the Queue has been closed
however, this method will return false if the queue has been closed
using the close(true) method and the last element has yet not been received.
- true if the queue has been closed
debug
public String debug()
Dumps internal state @remove
getContents
public Vector getContents()
returns a vector with all the objects currently in the queue
getFirst
public Object getFirst()
Returns the first element. Returns null if no elements are available.
getLast
public Object getLast()
Returns the last element. Returns null if no elements are available.
peek
public Object peek()
throws QueueClosedException
returns the first object on the queue, without removing it.
If the queue is empty this object blocks until the first queue object has
been added
- the first object on the queue
peek
public Object peek(long timeout)
throws QueueClosedException,
TimeoutException
returns the first object on the queue, without removing it.
If the queue is empty this object blocks until the first queue object has
been added or the operation times out
timeout
- how long in milli seconds will this operation wait for an object to be added to the queue
before it times out
- the first object on the queue
remove
public Object remove()
throws QueueClosedException
Removes 1 element from head or blocks
until next element has been added or until queue has been closed
- the first element to be taken of the queue
remove
public Object remove(long timeout)
throws QueueClosedException,
TimeoutException
Removes 1 element from the head.
If the queue is empty the operation will wait for timeout ms.
if no object is added during the timeout time, a Timout exception is thrown
timeout
- - the number of milli seconds this operation will wait before it times out
- the first object in the queue
removeElement
public void removeElement(Object obj)
throws QueueClosedException
removes a specific object from the queue.
the object is matched up using the Object.equals method.
obj
- the actual object to be removed from the queue
reset
public void reset()
resets the queue.
This operation removes all the objects in the queue and marks the queue open
size
public int size()
returns the number of objects that are currently in the queue
toString
public String toString()
prints the size of the queue
Copyright B) 2001,2002 www.jgroups.com . All Rights Reserved.