Waiting For A Synchronized Method  
Author Message
cppaddict





PostPosted: 2004-8-23 18:23:00 Top

java-programmer, Waiting For A Synchronized Method Say thread1 begins executing a synchronized method.

While it's executing, both thread2 and thread3 call the synchronized
method, in that order.

When thread1 ends executing and gives up its lock, is thread2
guaranteed to execute next (because it's been waiting longer than
thread3), or is it possible that thread3 executes first?

My experiments seem to point to thread2 always running first in the
above situation, but I'd like to verify this.

Thanks,
John
 
Chris Uppal





PostPosted: 2004-8-23 20:07:00 Top

java-programmer >> Waiting For A Synchronized Method cppaddict wrote:

> Say thread1 begins executing a synchronized method.
>
> While it's executing, both thread2 and thread3 call the synchronized
> method, in that order.
>
> When thread1 ends executing and gives up its lock, is thread2
> guaranteed to execute next

No.

> or is it possible that thread3 executes first?

Yes. Or rather, it is implementation-dependent, so don't assume anything.

-- chris


 
Frank





PostPosted: 2004-8-24 11:43:00 Top

java-programmer >> Waiting For A Synchronized Method On Mon, 23 Aug 2004 10:23:03 GMT, cppaddict <email***@***.com> wrote:

> Say thread1 begins executing a synchronized method.
>
> While it's executing, both thread2 and thread3 call the synchronized
> method, in that order.
>
> When thread1 ends executing and gives up its lock, is thread2
> guaranteed to execute next (because it's been waiting longer than
> thread3), or is it possible that thread3 executes first?
>
> My experiments seem to point to thread2 always running first in the
> above situation, but I'd like to verify this.
>
> Thanks,
> John


There is no guarantee which thread will recieve the lock after thread 1
has completed it's run. Generally, the OS gives a slight preference first
to the thread with the higher priority, then to the thread that has been
waiting the longest. However, this is just a guideline, and does not
suggest a requirement on behalf of the implementation. As I said before,
there are no guarantees.

HTH

-Frank