aspose file tools*
The moose likes Programmer Certification (SCJP/OCPJP) and the fly likes Sun Practice Exam - Concurrency > Objective 4.3 Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of JavaScript Promises Essentials this week in the JavaScript forum!
JavaRanch » Java Forums » Certification » Programmer Certification (SCJP/OCPJP)
Bookmark "Sun Practice Exam - Concurrency > Objective 4.3 " Watch "Sun Practice Exam - Concurrency > Objective 4.3 " New topic
Author

Sun Practice Exam - Concurrency > Objective 4.3

Vyas Sanzgiri
Ranch Hand

Joined: Jun 16, 2007
Posts: 686

How should we approach such questions? I am not able to understand what is going on in this program


5. class NoGo implements Runnable {
6. private int i;
7. public void run() {
8. if (i%10 != 0) { i++; }
9. for(int x=0; x<10; x++, i++)
10. { if (x == 4) Thread.yield(); }
11. System.out.print(i + " ");
12. }
13. public static void main(String [] args) {
14. NoGo n = new NoGo();
15. for(int x=0; x<100; x++) { new Thread(n).start(); }
16. }
17. }


Which is true?


A
The output can never contain the value 10.
B
The output can never contain the value 30.
C
The output can never contain the value 297.
D
The output can never contain the value 1020.
E
The output can never contain the value 1130.


===Vyas Sanzgiri===
My Blog
Ankit Garg
Sheriff

Joined: Aug 03, 2008
Posts: 9313
    
  17

Well my logic says that only option E is correct. And that's because there are 100 threads and each can increment the value of i by max 11. So 100 * 11 = 1100 and thus the output can never be 1130. Other values look feasible to me as there are so many threads and yeilds involved that any value out of those can be displayed...


SCJP 6 | SCWCD 5 | Javaranch SCJP FAQ | SCWCD Links
 
It is sorta covered in the JavaRanch Style Guide.
 
subject: Sun Practice Exam - Concurrency > Objective 4.3