class Concurrent::Collection::NonConcurrentPriorityQueue

@!macro priority_queue

A queue collection in which the elements are sorted based on their
comparison (spaceship) operator `<=>`. Items are added to the queue
at a position relative to their priority. On removal the element
with the "highest" priority is removed. By default the sort order is
from highest to lowest, but a lowest-to-highest sort order can be
set on construction.

The API is based on the `Queue` class from the Ruby standard library.

The pure Ruby implementation, `RubyNonConcurrentPriorityQueue` uses a heap algorithm
stored in an array. The algorithm is based on the work of Robert Sedgewick
and Kevin Wayne.

The JRuby native implementation is a thin wrapper around the standard
library `java.util.NonConcurrentPriorityQueue`.

When running under JRuby the class `NonConcurrentPriorityQueue` extends `JavaNonConcurrentPriorityQueue`.
When running under all other interpreters it extends `RubyNonConcurrentPriorityQueue`.

@note This implementation is *not* thread safe.

@see http://en.wikipedia.org/wiki/Priority_queue
@see http://ruby-doc.org/stdlib-2.0.0/libdoc/thread/rdoc/Queue.html

@see http://algs4.cs.princeton.edu/24pq/index.php#2.6
@see http://algs4.cs.princeton.edu/24pq/MaxPQ.java.html

@see http://docs.oracle.com/javase/7/docs/api/java/util/PriorityQueue.html

@!visibility private