This week's book giveaway is in the Design forum.
We're giving away four copies of Design for the Mind and have Victor S. Yocco on-line!
See this thread for details.
Win a copy of Design for the Mind this week in the Design forum!
    Bookmark Topic Watch Topic
  • New Topic

It is too much ....

 
ankur rathi
Ranch Hand
Posts: 3830
  • Mark post as helpful
  • send pies
  • Report post to moderator


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
Posts: 1392
  • Mark post as helpful
  • send pies
  • Report post to moderator
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
Posts: 7729
  • Mark post as helpful
  • send pies
  • Report post to moderator
Running this program in the BlueJ IDE gives the result true
 
ankur rathi
Ranch Hand
Posts: 3830
  • Mark post as helpful
  • send pies
  • Report post to moderator
Come-on Barry ,
It can't be dependent on IDE ...
It may be because of your JVM .
 
Tony Morris
Ranch Hand
Posts: 1608
  • Mark post as helpful
  • send pies
  • Report post to moderator
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.

The output of your test case is indeterminate.
 
Aruna Agrawal
Ranch Hand
Posts: 66
  • Mark post as helpful
  • send pies
  • Report post to moderator
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
Posts: 4982
  • Mark post as helpful
  • send pies
  • Report post to moderator
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.

Nick
 
Jeroen Wenting
Ranch Hand
Posts: 5093
  • Mark post as helpful
  • send pies
  • Report post to moderator
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.
 
Mark Spritzler
ranger
Sheriff
Posts: 17278
6
IntelliJ IDE Mac Spring
  • Mark post as helpful
  • send pies
  • Report post to moderator
Rathi, why did you post this twice? You know our rules about duplicate posting.

I am going to close this thread, since the other one has my really funny response of "42".

Mark
 
    Bookmark Topic Watch Topic
  • New Topic