At 08:45 PM 27/05/2003 -0700, Jerry Schwarz wrote:
>Yes, but this whole discussion got started under the premise that the 
>program did issue notifies "around this time".  The notify could have been 
>done before the interrupter locks the monitor.
Maybe we are talking at slightly cross purposes. The particular algorithm 
that David raised in objection to my third proposal was
synchronized void someBlockingMethod() throws InterruptedException
{
     while (!inRightState)
         wait();
     // do something
}
David argued, and I don't disagree, that under the current specification, 
interrupting the waiting thread guarantees that the method will throw the 
InterruptedException as soon as the thread wakes up, and in particular, 
that it will not go round and perform the inRightState test again which 
might no longer be capable of evaluation (or perhaps would simply give the 
wrong answer).
It is certainly true that if the program issues a notify at around the same 
time (and before the interrupt) then the thread is no longer in the wait 
state, and that interrupting it will not work. However, since doing this 
would break the program, one can reasonably assume that the program is 
designed so that it won't.
Sylvia.
-------------------------------
JavaMemoryModel mailing list - http://www.cs.umd.edu/~pugh/java/memoryModel
This archive was generated by hypermail 2b29 : Thu Oct 13 2005 - 07:00:45 EDT