[concurrency-interest] Deque and skip list integration

Doug Lea dl@cs.oswego.edu
Wed, 29 Dec 2004 07:58:27 -0500


As a sign that we believe that APIs and code are stable, we've placed
the interfaces and implementations of deques and skip lists (that
we've long had as RFEs) into our main reference repository:

APIs:   http://gee.cs.oswego.edu/dl/concurrent/dist/docs/index.html
Jar:    http://gee.cs.oswego.edu/dl/concurrent/dist/jsr166.jar
Source: http://gee.cs.oswego.edu/cgi-bin/viewcvs.cgi/jsr166/src/main/java/
TCK:    http://gee.cs.oswego.edu/cgi-bin/viewcvs.cgi/jsr166/src/test/tck/

We're not sure when these will be integrated into early-access Mustang
builds. Probably within a month or so.  As usual, you can use these
now in 1.5.0 by running java with -Xbootclasspath/p:jsr166.jar .  (You
may need to precede "jsr166.jar" with its full file path.) Also, we
will keep the "jsr166x" versions of classes around so you can always
run them that way.

Now would be a very good time to take a look at these and tell us if
you have any complaints or suggestions. We rely on you, the members of
the concurrency-interest list, to help ensure that APIs are sensible,
performance is good, and so on.  We would also be thrilled to receive
code reviews.  The new and updated classes are:

  java.util interfaces
    Deque
    NavigableMap
    NavigableSet
  java.util.concurrent interfaces
    BlockingDeque
    ConcurrentNavigableMap
  java.util implementations:
    ArrayDeque
    LinkedList  (updated to support Deque)
    TreeMap     (updated to support NavigableMap)
    TreeSet     (updated to support NavigableSet)
    Collections (updated with new adaptor/view methods)
  java.util.concurrent implementations
    ConcurrentSkipListMap
    ConcurrentSkipListSet
    LinkedBlockingDeque
    Concurrent  (a new class to hold static factories and adaptors)


Sources for updated LinkedList, TreeMap, TreeSet, and Collections are
under Sun license. All others are under our usual public domain
release.

Aside: The fact that so many things had to be changed or introduced
merely to support deques and skip lists explains why we postponed this
to after 1.5.0.

We are still contemplating and/or working on a few other minor
RFEs, for example additional TimeUnit values.

-Doug