EDU.oswego.cs.dl.util.concurrent

Class BoundedPriorityQueue

public class BoundedPriorityQueue extends SemaphoreControlledChannel

A heap-based priority queue, using semaphores for concurrency control. The take operation returns the least element with respect to the given ordering. (If more than one element is tied for least value, one of them is arbitrarily chosen to be returned -- no guarantees are made for ordering across ties.) Ordering follows the JDK1.2 collection conventions: Either the elements must be Comparable, or a Comparator must be supplied. Comparison failures throw ClassCastExceptions during insertions and extractions. The implementation uses a standard array-based heap algorithm, as described in just about any data structures textbook.

Put and take operations may throw ClassCastException if elements are not Comparable, or not comparable using the supplied comparator. Since not all elements are compared on each operation it is possible that an exception will not be thrown during insertion of non-comparable element, but will later be encountered during another insertion or extraction.

[ Introduction to this package. ]

Field Summary
protected Heapheap_
Constructor Summary
BoundedPriorityQueue(int capacity, Comparator cmp)
Create a priority queue with the given capacity and comparator
BoundedPriorityQueue(Comparator comparator)
Create a priority queue with the current default capacity and the given comparator
BoundedPriorityQueue(int capacity)
Create a priority queue with the given capacity, and relying on natural ordering.
BoundedPriorityQueue()
Create a priority queue with the current default capacity and relying on natural ordering.
BoundedPriorityQueue(int capacity, Comparator cmp, Class semaphoreClass)
Create a priority queue with the given capacity and comparator, using the supplied Semaphore class for semaphores.
Method Summary
protected Objectextract()
protected voidinsert(Object x)
Objectpeek()

Field Detail

heap_

protected final Heap heap_

Constructor Detail

BoundedPriorityQueue

public BoundedPriorityQueue(int capacity, Comparator cmp)
Create a priority queue with the given capacity and comparator

Throws: IllegalArgumentException if capacity less or equal to zero

BoundedPriorityQueue

public BoundedPriorityQueue(Comparator comparator)
Create a priority queue with the current default capacity and the given comparator

BoundedPriorityQueue

public BoundedPriorityQueue(int capacity)
Create a priority queue with the given capacity, and relying on natural ordering.

BoundedPriorityQueue

public BoundedPriorityQueue()
Create a priority queue with the current default capacity and relying on natural ordering.

BoundedPriorityQueue

public BoundedPriorityQueue(int capacity, Comparator cmp, Class semaphoreClass)
Create a priority queue with the given capacity and comparator, using the supplied Semaphore class for semaphores.

Throws: IllegalArgumentException if capacity less or equal to zero NoSuchMethodException If class does not have constructor that intializes permits SecurityException if constructor information not accessible InstantiationException if semaphore class is abstract IllegalAccessException if constructor cannot be called InvocationTargetException if semaphore constructor throws an exception

Method Detail

extract

protected Object extract()

insert

protected void insert(Object x)

peek

public Object peek()