[concurrency-interest] forkjoin updates

Doug Lea dl at cs.oswego.edu
Sat Sep 6 10:08:31 EDT 2008


An updated jsr166y package is available. The changes
are mainly focussed on internal reducing overhead and improving
scalability. There are some visible changes though:

* Phasers now support tiering -- you can create trees
of them to reduce contention. (Initial plans were
to do this internally/adaptively, but exposing
it leaving it up to users works out better.)

* AsyncAction is now a base class for (existing) class
LinkedAsyncAction, along with new classes BasicAsyncAction
(a minimal implementation) and BinraryAsyncAction. Async
actions take some attitude adjustment to get used to, but
are more flexible than Recursive{Action,Task}.

* CyclicAction has disappeared, probably to be replaced
by better support for mixing long-lived looping threads
running in ExecutorServices with data-parallel tasks running
in ForkJoinPools. (Which is possible even now, but not
always easy to set up.) Similarly for Phaser integration.

* A few small utility methods that probably no
one has used have gone away, and a few better
documented ones introduced.

Some of the main streamlining improvements rely on
Java6 features. (It also runs of course on
early-access versions of openjdk/jdk7.)
There is no longer even internal guidance on
how to adapt for Java5. If you must run on Java5, you
probably want to keep using older snaphots.

Comments welcome as always. Things are in their usual places:
API specs:
   http://gee.cs.oswego.edu/dl/jsr166/dist/jsr166ydocs/
jar file:
   http://gee.cs.oswego.edu/dl/jsr166/dist/jsr166y.jar
Browsable CVS sources:
   http://gee.cs.oswego.edu/cgi-bin/viewcvs.cgi/jsr166/src/jsr166y/

-Doug





More information about the Concurrency-interest mailing list