On Mon, 23 Aug 2004 10:23:03 GMT, 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 (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
|