logo

CuriousTab

CuriousTab

Discussion


Home Java Programming Threads See What Others Are Saying!
  • Question
  • What will be the output of the program?
    class Test116 
    { 
    static final StringBuffer sb1 = new StringBuffer(); 
    static final StringBuffer sb2 = new StringBuffer(); 
    public static void main(String args[]) 
    { 
        new Thread() 
        { 
            public void run() 
            { 
                synchronized(sb1) 
                { 
                    sb1.append("A"); 
                    sb2.append("B"); 
                } 
            } 
        }.start(); 
    
        new Thread() 
        { 
            public void run() 
            { 
                synchronized(sb1) 
                { 
                    sb1.append("C"); 
                    sb2.append("D"); 
                } 
            } 
        }.start(); /* Line 28 */
    
        System.out.println (sb1 + " " + sb2); 
        } 
    }
    


  • Options
  • A. main() will finish before starting threads.
  • B. main() will finish in the middle of one thread.
  • C. main() will finish after one thread.
  • D. Cannot be determined.

  • Correct Answer
  • Cannot be determined. 

    Explanation
    Can you guarantee the order in which threads are going to run? No you can't. So how do you know what the output will be? The output cannot be determined.

    add this code after line 28:

    try { Thread.sleep(5000); } catch(InterruptedException e) { }

    and you have some chance of predicting the outcome.


    More questions

    • 1. Which of the following will directly stop the execution of a Thread?

    • Options
    • A. wait()
    • B. notify()
    • C. notifyall()
    • D. exits synchronized code
    • Discuss
    • 2. What will be the output of the program?
      public class Test107 implements Runnable 
      { 
          private int x; 
          private int y; 
      
          public static void main(String args[]) 
          {
              Test107 that = new Test107(); 
              (new Thread(that)).start(); 
              (new Thread(that)).start(); 
          } 
          public synchronized void run() 
          {
              for(int i = 0; i < 10; i++) 
              { 
                  x++; 
                  y++; 
                  System.out.println("x = " + x + ", y = " + y); /* Line 17 */
              } 
          } 
      } 
      

    • Options
    • A. Compilation error.
    • B. Will print in this order: x = 1 y = 1 x = 2 y = 2 x = 3 y = 3 x = 4 y = 4 x = 5 y = 5... but the output will be produced by both threads running simultaneously.
    • C. Will print in this order: x = 1 y = 1 x = 2 y = 2 x = 3 y = 3 x = 4 y = 4 x = 5 y = 5... but the output will be produced by first one thread then the other. This is guaranteed by the synchronised code.
    • D. Will print in this order x = 1 y = 2 x = 3 y = 4 x = 5 y = 6 x = 7 y = 8...
    • Discuss
    • 3. What will be the output of the program?
      String x = new String("xyz");
      String y = "abc";
      x = x + y;
      
      How many String objects have been created?

    • Options
    • A. 2
    • B. 3
    • C. 4
    • D. 5
    • Discuss
    • 4. What will be the output of the program?
      public class SqrtExample 
      {
          public static void main(String [] args) 
          {
              double value = -9.0;
              System.out.println( Math.sqrt(value));
          }
      }
      

    • Options
    • A. 3.0
    • B. -3.0
    • C. NaN
    • D. Compilation fails.
    • Discuss
    • 5. Which two are valid constructors for Thread?

      1. Thread(Runnable r, String name)
      2. Thread()
      3. Thread(int priority)
      4. Thread(Runnable r, ThreadGroup g)
      5. Thread(Runnable r, int priority)

    • Options
    • A. 1 and 3
    • B. 2 and 4
    • C. 1 and 2
    • D. 2 and 5
    • Discuss
    • 6. Which collection class allows you to associate its elements with key values, and allows you to retrieve objects in FIFO (first-in, first-out) sequence?

    • Options
    • A. java.util.ArrayList
    • B. java.util.LinkedHashMap
    • C. java.util.HashMap
    • D. java.util.TreeMap
    • Discuss
    • 7. What will be the output of the program?
      String x = "xyz";
      x.toUpperCase(); /* Line 2 */
      String y = x.replace('Y', 'y');
      y = y + "abc";
      System.out.println(y);
      

    • Options
    • A. abcXyZ
    • B. abcxyz
    • C. xyzabc
    • D. XyZabc
    • Discuss
    • 8. What will be the output of the program?
      public class SwitchTest 
      {  
          public static void main(String[] args) 
          {
              System.out.println("value =" + switchIt(4)); 
          } 
          public static int switchIt(int x) 
          {
              int j = 1;  
              switch (x) 
              { 
                  case l: j++; 
                  case 2: j++;  
                  case 3: j++; 
                  case 4: j++; 
                  case 5: j++; 
                  default: j++; 
                  } 
              return j + x;  
          } 
      }
      

    • Options
    • A. value = 2
    • B. value = 4
    • C. value = 6
    • D. value = 8
    • Discuss
    • 9. What will be the output of the program?
      public class If2 
      {
          static boolean b1, b2;
          public static void main(String [] args) 
          {
              int x = 0;
              if ( !b1 ) /* Line 7 */
              {
                  if ( !b2 ) /* Line 9 */
                  {
                      b1 = true;
                      x++;
                      if ( 5 > 6 ) 
                      {
                          x++;
                      }
                      if ( !b1 ) 
                          x = x + 10;
                      else if ( b2 = true ) /* Line 19 */
                          x = x + 100;
                      else if ( b1 | b2 ) /* Line 21 */
                          x = x + 1000;
                  }
              }
              System.out.println(x);
          }
      }
      

    • Options
    • A. 0
    • B. 1
    • C. 101
    • D. 111
    • Discuss
    • 10. What will be the output of the program?
      public class A
      { 
          void A() /* Line 3 */
          {
              System.out.println("Class A"); 
          } 
          public static void main(String[] args) 
          { 
              new A(); 
          } 
      }
      

    • Options
    • A. Class A
    • B. Compilation fails.
    • C. An exception is thrown at line 3.
    • D. The code executes with no output.
    • Discuss


    Comments

    There are no comments.

Enter a new Comment