logo

CuriousTab

CuriousTab

Discussion


Home Java Programming Threads See What Others Are Saying!
  • Question
  • What will be the output of the program?
    public class Test 
    {
        public static void main (String [] args) 
        {
            final Foo f = new Foo();
            Thread t = new Thread(new Runnable() 
            {
                public void run() 
                {
                    f.doStuff();
                }
            });
            Thread g = new Thread() 
            {
                public void run() 
                {
                    f.doStuff();
                }
            };
            t.start();
            g.start();
        }
    }
    class Foo 
    {
        int x = 5;
        public void doStuff() 
        {
            if (x < 10) 
            {
                // nothing to do
                try 
                {
                    wait();
                    } catch(InterruptedException ex) { }
            } 
            else 
            {
                System.out.println("x is " + x++);
                if (x >= 10) 
                {
                    notify();
                }
            }
        }
    }
    


  • Options
  • A. The code will not compile because of an error on notify(); of class Foo.
  • B. The code will not compile because of some other error in class Test.
  • C. An exception occurs at runtime.
  • D. It prints "x is 5 x is 6".

  • Correct Answer
  • An exception occurs at runtime. 

    Explanation
    C is correct because the thread does not own the lock of the object it invokes wait() on. If the method were synchronized, the code would run without exception.

    A, B are incorrect because the code compiles without errors.

    D is incorrect because the exception is thrown before there is any output.


    More questions

    • 1. Which of the following are legal lines of code?

      1. int w = (int)888.8;
      2. byte x = (byte)1000L;
      3. long y = (byte)100;
      4. byte z = (byte)100L;

    • Options
    • A. 1 and 2
    • B. 2 and 3
    • C. 3 and 4
    • D. All statements are correct.
    • Discuss
    • 2. What will be the output of the program?
      int I = 0;
      label:
          if (I < 2) {
          System.out.print("I is " + I);
          I++;
          continue label;
      }
      

    • Options
    • A. I is 0
    • B. I is 0 I is 1
    • C. Compilation fails.
    • D. None of the above
    • Discuss
    • 3. What will be the output of the program?
      interface Foo141 
      { 
          int k = 0; /* Line 3 */
      } 
      public class Test141 implements Foo141 
      {
          public static void main(String args[]) 
          {
              int i; 
              Test141 test141 = new Test141(); 
              i = test141.k; /* Line 11 */
              i = Test141.k; 
              i = Foo141.k; 
          } 
      }
      

    • Options
    • A. Compilation fails.
    • B. Compiles and runs ok.
    • C. Compiles but throws an Exception at runtime.
    • D. Compiles but throws a RuntimeException at runtime.
    • Discuss
    • 4. What will be the output of the program?
      public class Test 
      {  
          public static void main(String args[]) 
          { 
              int i = 1, j = 0; 
              switch(i) 
              { 
                  case 2: j += 6; 
                  case 4: j += 1; 
                  default: j += 2; 
                  case 0: j += 4; 
              } 
              System.out.println("j = " + j); 
          } 
      }
      

    • Options
    • A. j = 0
    • B. j = 2
    • C. j = 4
    • D. j = 6
    • Discuss
    • 5. What will be the output of the program?
      Float f = new Float("12"); 
      switch (f) 
      {
          case 12: System.out.println("Twelve"); 
          case 0: System.out.println("Zero"); 
          default: System.out.println("Default"); 
      }
      

    • Options
    • A. Zero
    • B. Twelve
    • C. Default
    • D. Compilation fails
    • Discuss
    • 6. What will be the output of the program?
      for (int i = 0; i < 4; i += 2) 
      { 
          System.out.print(i + " "); 
      } 
      System.out.println(i); /* Line 5 */
      

    • Options
    • A. 0 2 4
    • B. 0 2 4 5
    • C. 0 1 2 3 4
    • D. Compilation fails.
    • Discuss
    • 7. What will be the output of the program?
      import java.util.*; 
      class I 
      {
          public static void main (String[] args) 
          {
              Object i = new ArrayList().iterator(); 
              System.out.print((i instanceof List)+","); 
              System.out.print((i instanceof Iterator)+","); 
              System.out.print(i instanceof ListIterator); 
          } 
      }
      

    • Options
    • A. Prints: false, false, false
    • B. Prints: false, false, true
    • C. Prints: false, true, false
    • D. Prints: false, true, true
    • Discuss
    • 8. What will be the output of the program?
      public class CommandArgs 
      {
          public static void main(String [] args) 
          {
              String s1 = args[1];
              String s2 = args[2];
              String s3 = args[3];
              String s4 = args[4];
              System.out.print(" args[2] = " + s2);
          }
      }
      
      and the command-line invocation is

      > java CommandArgs 1 2 3 4


    • Options
    • A. args[2] = 2
    • B. args[2] = 3
    • C. args[2] = null
    • D. An exception is thrown at runtime.
    • Discuss
    • 9. Which two statements are equivalent?

      1. 16*4
      2. 16>>2
      3. 16/2^2
      4. 16>>>2

    • Options
    • A. 1 and 2
    • B. 2 and 4
    • C. 3 and 4
    • D. 1 and 3
    • Discuss
    • 10. What two statements are true about properly overridden hashCode() and equals() methods?

      1. hashCode() doesn't have to be overridden if equals() is.
      2. equals() doesn't have to be overridden if hashCode() is.
      3. hashCode() can always return the same value, regardless of the object that invoked it.
      4. equals() can be true even if it's comparing different objects.

    • Options
    • A. 1 and 2
    • B. 2 and 3
    • C. 3 and 4
    • D. 1 and 3
    • Discuss


    Comments

    There are no comments.

Enter a new Comment