[concurrency-interest] spurious wakeups semantics

Joshua Bloch josh at bloch.us
Sat Oct 29 13:56:12 EDT 2005


David,

Any wakeup, spurious or otherwise, is followed by acquisition of the
intrinsic lock on the object being waited on.  There is no race
condition, and no need for a volatile variable.

        Regards,

        Josh

On 10/29/05, David J. Biesack <David.Biesack at sas.com> wrote:
>
> Can someone clarify the semantics of spurious wakeup as noted in java.lang.Object wait() in Java 5?
>
> What happens to the monitor that the thread is waiting on? If another thread T2 has the lock
> and a waiting thread T1 wakes up "suriously", what happens to thread T2? Are both threads T1 and T2 now
> running, and what risks are there of race conditions? I understand that wait must be guarded
> by a loop, but is it not possible that the wait condition is no longer safe from concurrent update?
> Do variables used for wait conditions have to be volatile, for example?
>
> --
> David J. Biesack     SAS Institute Inc.
> (919) 531-7771       SAS Campus Drive
> http://www.sas.com   Cary, NC 27513
>
> _______________________________________________
> Concurrency-interest mailing list
> Concurrency-interest at altair.cs.oswego.edu
> http://altair.cs.oswego.edu/mailman/listinfo/concurrency-interest
>



More information about the Concurrency-interest mailing list