Discussion :: Threads
-
What will be the output of the program?
public class WaitTest { public static void main(String [] args) { System.out.print("1 "); synchronized(args) { System.out.print("2 "); try { args.wait(); /* Line 11 */ } catch(InterruptedException e){ } } System.out.print("3 "); } }
A.
It fails to compile because the IllegalMonitorStateException of wait() is not dealt with in line 11. |
B.
1 2 3 |
C.
1 3 |
D.
1 2 |
Answer : Option D
Explanation :
1 and 2 will be printed, but there will be no return from the wait call because no other thread will notify the main thread, so 3 will never be printed. The program is essentially frozen at line 11.
A is incorrect; IllegalMonitorStateException is an unchecked exception so it doesn't have to be dealt with explicitly.
B and C are incorrect; 3 will never be printed, since this program will never terminate because it will wait forever.
Be The First To Comment