[concurrency-interest] Why does FutureTask hold reference to the Callable object forever?
tim at peierls.net
Thu Jan 24 22:50:04 EST 2008
On Jan 24, 2008 6:25 PM, Endre Stølsvik <Online at stolsvik.com> wrote:
> ... you _have to_ make a wrapper that forwards all calls, as you cannot
> yourself implement the actual needed behavior of the
> RunnableScheduledFuture, since STPE's implementation of it,
> ScheduledFutureTask, relies on the innards of STPE itself
It's true, you do have to make a forwarding wrapper. I put one on the wiki
just now, but it would be nice to have something like this in the standard
> (and since you aren't supplied with the arguments of the initial submit).
Not sure how being supplied with those arguments would help you avoid the
need for a forwarding wrapper.
I tried using this feature (the decorateTask-methods) to implement
> Exception-catching by wrapping and overriding run(), but didn't manage to do
> it in any way (it hits me now that you could possibly proxy it and use the
> reflection stuff to change visibility of some of those private methods to
> make it possible to invoke them?).
> But such amazing wizardry is not what those methods are meant to enable
> you to do, then?
If you want to wrap submitted Runnables, why not wrap them *before*
submission? If you want to encapsulate that behavior in a
ScheduledExecutorService, you could write a
RunnableWrappingScheduledExecutorService that forwards to an underlying
STPE, but wraps any submitted Runnables using a protected method,
wrap(Runnable) that by default just returns the Runnable itself.
> Maybe put some @Overrides in that example code?
Oops, thanks, just did.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Concurrency-interest