This week's book giveaway is in the Agile and other Processes forum. We're giving away four copies of The Mikado Method and have Ola Ellnestam and Daniel Brolund on-line! See this thread for details.
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 ...
Thanks .
Joyce Lee
Ranch Hand
Joined: Jul 11, 2003
Posts: 1392
posted
0
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 ).
Barry Gaunt
Ranch Hand
Joined: Aug 03, 2002
Posts: 7729
posted
0
Running this program in the BlueJ IDE gives the result true
Come-on Barry , It can't be dependent on IDE ... It may be because of your JVM .
Tony Morris
Ranch Hand
Joined: Sep 24, 2003
Posts: 1608
posted
0
Calling yield() puts the thread into Ready state, but some scheduler implementations will ignore the call if it determines that it will only put the thread back into Running state immediately after.
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???
Nicholas Cheung
Ranch Hand
Joined: Nov 07, 2003
Posts: 4982
posted
0
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.