aspose file tools*
The moose likes Java in General and the fly likes a thread code Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Soft Skills this week in the Jobs Discussion forum!
JavaRanch » Java Forums » Java » Java in General
Bookmark "a thread code " Watch "a thread code " New topic
Author

a thread code

Arun Martin
Ranch Hand

Joined: Dec 01, 2000
Posts: 64
hi,
given below is a mock xam question.
question:
--------
public int increment() {
try {
counter += 2;
System.out.write(counter);
}
finally { counter--; }
return counter;
}
What is wrong with method increment()?
options:
--------
* the "finally" code block must include a return statement
* the method should be synchronized
* there is no "catch" block
* outputstream "out" must be opened inside increment()
* finally() can not access class variables
i tried revamping the code and it is successfully working(ie no output is being displayed) but even then i don't have any clue to what the correct answer is.
revamped code:
-------------
class rf2
{
int counter=0;
public int increment()
{
try
{
counter += 2;
System.out.write(counter);
}
finally
{
counter--;

}
return counter;
}
public static void main(String a[])
{

rf2 o = new rf2();
o.increment();
}
}
could u please help?
arun.
Rob Acraman
Ranch Hand

Joined: Dec 03, 2000
Posts: 89
Wel,, since you've successfully compiled and run the code, you've effectively ruled out options A,C,D and E - leaving B "method should be synchronized".
increment() is both reading and re-setting a class variable, which makes it especially prone to weird results if another thread just happens to invoke increment() on the same object at the same time. OK, unlikely but possible (and it's pretty difficult to consistently generate this test-case).
This could be considered being over-the-top, but then just adding "synchronized" is a very simple step for peace-of-mind.
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: a thread code