logo       

Re: JCiP Memoizer: msg#00028

java.jsr.166-concurrency

Subject: Re: JCiP Memoizer

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@xxxxxxxxx> wrote:
On 10/17/06, Alexandru Popescu < the.mindstorm.mailinglist@xxxxxxxxx> 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@xxxxxxxxxxxxxxxxxxxx
http://altair.cs.oswego.edu/mailman/listinfo/concurrency-interest

_______________________________________________
Concurrency-interest mailing list
Concurrency-interest@xxxxxxxxxxxxxxxxxxxx
http://altair.cs.oswego.edu/mailman/listinfo/concurrency-interest
<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

News | FAQ | advertise