Home / Java Programming / Threads :: Discussion

Discussion :: Threads

  1. 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 "); 
        } 
     } 
    

  2. 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

    View Answer

    Workspace

    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