[concurrency-interest] JCiP Memoizer

Tim Peierls tim at peierls.net
Wed Oct 18 01:17:51 EDT 2006


It's only 1am here, but it looks funny to me, too. I remember that the
intent was that a thread interrupted in the middle of a long computation
should not leave the incomplete computation lying around in the cache. So
any thread that detects a cancellation removes the task from the cache and
tries again.

But an interruption during ft.run() will not be seen as a cancellation of
the FutureTask, so this doesn't work. The fix would probably involve
checking for interruption after the call to ft.run().

I just read Joe's response, but I don't see how a Memoizer-created
FutureTask, encapsulated as it is, could ever be cancelled. (Also, I don't
think cache.remove(arg, f) ensures that only the task creator removes the
task; it just ensures that the only the failed task is removed.)

--tim


On 10/18/06, Joe Bowbeer <joe.bowbeer at gmail.com> wrote:
>
> On 10/17/06, Alexandru Popescu <the.mindstorm.mailinglist at gmail.com>
> wrote:
> >
> > I would start by saying that till now Chapter 5 is my favorite so far
> > :">. Still, I have a small problem (indeed it is 5am) understanding
> > the final version of Memoizer (page 108), or at least one line from
> > it:
> >
> > public V compute(final A arg) throws InterruptedException {
> >    while(true) {
> >             // code
> >     }
> > }
> >
>
> It's because of this line further down:
>
>             } catch (CancellationException e) {
>                 cache.remove(arg, f);
>
> from http://jcip.net/listings/Memoizer.java
>
> Here's a partial explanation:
>
> The memoizing compute method is trying to reflect the exception from
> the wrapped method back to the caller, but it also has to handle the
> case where the task may have been cancelled (somehow).
>
> In this case, the compute method removes its task from the cache (iff
> it created the task) and tries again.
>
> --Joe
> _______________________________________________
> Concurrency-interest mailing list
> Concurrency-interest at altair.cs.oswego.edu
> http://altair.cs.oswego.edu/mailman/listinfo/concurrency-interest
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: /pipermail/attachments/20061018/9a0ee35a/attachment-0001.html 


More information about the Concurrency-interest mailing list