Every body knows that , when any thread calls yield() method , it has to go in runnable state .
In above example , it is sure that output will be false every time ( I can bat for this ) ...
But In this case also , is it right to choose No guarantee ... It is too much ...
Joined: Jul 11, 2003
For this case, I'll still choose "No guarantee". It's possible that the main thread yields and is then reselected by the scheduler especially for threads with same priority (well, that's what K&B book says on pg 513 ).
Joined: Aug 03, 2002
Running this program in the BlueJ IDE gives the result true
Originally posted by rathi ji: Come-on Barry , It can't be dependent on IDE ... It may be because of your JVM .
I tried the same program in Eclipse and BlueJ with the same jdk and jre and found false and true output respectively. It can't be dependent on IDE as rathi said then why am i getting different output???
Joined: Nov 07, 2003
What do you mean by same JVM and JRE? You just mean the same version, e.g. 1.3.1? If so, there might be problems, as different JVM might give different results.
As you might know, the behavior of JVM in WSAD/WAS is different from the one in SunONE, say, even both declare that they are J2SE 1.3.1.
Like already stated, there are no guarantees so yield might not have the effect of getting the other thread to run at all. This is not IDE dependent, not JVM dependent, it's pure chance. One run might produce false, another true. Maybe you get true a thousand times and then false just once, there's just no telling.