On May 12, 2:51=A0am, Logan Shaw <lshaw-use...@[EMAIL PROTECTED]
> wrote:
> Arne Vajh=F8j wrote:
> > puzzlecracker wrote:
> >> It is a copy and paste from Doug Lea's Mutex implementation. I dont
> >> understand the point of this line:
> >> =A0 =A0 if (Thread.interrupted()) throw new InterruptedException();
>
> > If interrupt has been called on the thread, then you do not
> > want to start waiting !?!?
>
> Is that simply a performance optimization? =A0If not, it looks like
> there's a race condition, because the thread can get interrupted
> after that 'if'-statement completes but before entering the
> 'synchronized' block.
>
> Or to put it a different way, if the thread is interrupted, this
> code doesn't seem to guarantee that you won't start waiting.
I agree with you that it is an optimisation. However, since it is only
an optimisation, a race condition does not harm.
On the other hand, the check (Thread.interrupted()) is always added to
the call so it is also optimised for the interrupt rather than for the
normal case.
Best Regards,
Szabolcs


|