[concurrency-interest] Executor framework adjustments
Fri, 5 Dec 2003 10:03:26 -0500
Just as official JCP public review period is coming to a close, we
made a few API adjustments in the Executor framework that were
primarily motivated by some very recent planned J2EE efforts -- the
proposed JSR-236 and JSR-237 -- but make good sense in other contexts
For background, see
And follow links near the bottom of each to see BEA and IBM's proposed
The JSR-166 changes are both straightforward:
* ScheduledExecutor has been made into an interface, not class,
and the concrete version is renamed ScheduledThreadPoolExecutor
(This better enables alternative implmentations of the schedule
* The "Cancellable" and "Future" interfaces (along with default Task
implementations) have been merged (as Future and FutureTask). The
initial idea was to enable different implementations based on
Runnables vs Callables. But this provided no real value (and the
performance differences are not noticeable) and unnecessarily
complicates both usage and layered APis.
These changes should simplify J2EE adaptations and extensions.
Doing this also entailed a couple of other boring changes.
As always, reactions would be welcome.
These changes apparently won't make it into the first early-access or
beta releases of Sun J2SE1.5, but should make it in the following
versions. However, we've put instructions on how to cope at
where it now says:
There is a lag between JSR166 spec changes and integration into Sun
J2SE1.5. If you are running an early access or beta version of 1.5,
you can make sure you are running the current versions listed in the
javadocs on this site by getting the jar file at
http://gee.cs.oswego.edu/dl/concurrent/dist/jsr166.jar, and run using:
java -server -Xbootclasspath/p:/somepath/jsr166.jar Program
(The "server" option is not strictly needed but is highly recommended
for concurrent programs.)