[concurrency-interest] Why does FutureTask hold reference to the Callable object forever?
tim at peierls.net
Thu Jan 24 11:21:12 EST 2008
On Jan 24, 2008 5:18 AM, Endre Stølsvik <Online at stolsvik.com> wrote:
> Check decorateTask(...): please enlighten me on exactly HOW you're
> supposed to use those methods to really decorate your task, while still
> honoring the contract under which the Runnable/Callable was enqueued.
"Task" in decorateTask (and in AbstractExecutorService.newTaskFor) refers to
the Runnable(Scheduled)Future, not to the submitted Runnable/Callable. These
methods probably should have been named "decorateFuture" and "newFutureFor".
The point of these methods is to give subclasses a chance to supply a
different concrete type for the Runnable(Scheduled)Future returned when a
Runnable/Callable is submitted. Without these methods, there's no way to do
this that doesn't involve a huge amount of reimplementation of existing
I added an example to the wiki of using decorateTask to provide cancellation
behavior in a custom scheduled executor service:
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Concurrency-interest