Professional Documents
Culture Documents
Bill Brodgen's Hardest Question No
Bill Brodgen's Hardest Question No
File APIs for Java Developers Manipulate DOC, XLS, PPT, PDF and many others from your application. http://aspose.com/file-tools
Java FAQ
Recent Topics
Register / Login
A special promo: Enter your blog post or vote on a blogger to be featured in an upcoming Journal
Author
Prasanna Wamanacharya Ranch Hand Joined: Apr 24, 2001 Posts: 143
Hi, the following question is from Bill Brodgen's Hardest Questions. You are working on an applet which does animation. There is a single object animC, derived from java.awt.Canvas, which holds all the animation data and a memory image. There is a single Thread, animT which uses this data to create a new image for the next animation frame and then calls the following method.
view plain c opy to c lipboard print ?
N ote: T ext c ontent in the c ode bloc ks is automatic ally word- wrapped
0 1 . 0 2 . 0 3 . 0 4 . 0 5 . 0 6 . 0 7 . 0 8 . 0 9 .
s y n c h r o n i z e dv o i dw a i t F o r P a i n t ( ){ p a i n t e d=f a l s e ; r e p a i n t ( ) ; w h i l e ( ! p a i n t e d ){ t r y{ w a i t ( ) ; }c a t c h ( I n t e r r u p t e d E x c e p t i o nx ){ } }
1/3
www.coderanch.com/t/199379/java-programmer-SCJP/certification/Bill-Brodgen-Hardest
6/13/13
1 0 .
The paint method in animC executes the foll. code after the new animation frame has been shown.
view plain c opy to c lipboard print ?
N ote: T ext c ontent in the c ode bloc ks is automatic ally word- wrapped
0 1 .
s y n c h r o n i z e d ( t h i s ){ p a i n t e d=t r u e ;n o t i f y ( ) ; }
After animT has entered the wait() method in waitForPaint and before the paint method has been executed, which of the foll. statements is true? a. Other Threads cannot modify data in the animC object. b. Other Threads can only modify data in the animC object using synchronized methods. c. Other Threads can only modify data in the animC object using synchronized or unsynchronized methods. d. If the animT Thread is interrupted, it will exit the waitForPaint method. Answer given: c I think that even d should be correct. Explanation for option d is given as
Answer d is wrong because when a blocked Thread is interrupted, an InterruptedException is thrown. Since this exception is caught inside the while loop, animT will re-enter the wait method.
My question is, what is the point of interrupting a Thread, if it is going to reenter the wait method and susequently into the waiting state? If we want the method to exit, should we just declare the exception in the throws clause of the method, and not handle it in the method, but handle it in the calling method? Thank you, Prasanna.
js yang Ranch Hand Joined: May 09, 2001 Posts: 40
Note Brogden's explanation: Answer d is wrong because when a blocked Thread is interrupted, an InterruptedException is thrown. Since this exception is caught INSIDE THE WHILE LOOP, animT will re-enter the wait method. Normally, when an InterruptedException is thrown, the thread leaves the wait status. However, in Brogden's problem, the InterruptedException is in a while loop--when the thread leaves the wait status, it is thrown back into waiting because of the while loop.
www.coderanch.com/t/199379/java-programmer-SCJP/certification/Bill-Brodgen-Hardest
2/3
6/13/13
Mikael Jonasson Ranch Hand Joined: May 16, 2001 Posts: 158
Just to point out the obvious: It doesn't have to re-enter the loop. First i re-checks the value of painted. If that is true now, it leaves the loop.
Similar Threads Threads Thread question: synchronization on differerent obj Threads: Synchronized method threads thread related
All times above are in your local time zone & format.T he current ranch time (not your local time) is Jun 13, 2013 03:07:31 .
www.coderanch.com/t/199379/java-programmer-SCJP/certification/Bill-Brodgen-Hardest
3/3