logo

CuriousTab

CuriousTab

Discussion


Home Java Programming Threads See What Others Are Saying!
  • Question
  • 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...

  • Correct Answer
  • 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. 

    Explanation
    Both threads are operating on the same instance variables. Because the code is synchronized the first thread will complete before the second thread begins. Modify line 17 to print the thread names:

    System.out.println(Thread.currentThread().getName() + " x = " + x + ", y = " + y);


    More questions

    • 1. Which three statements are true?
      1. f1 == f2
      2. f1 == f3
      3. f2 == f1[1]
      4. x == f1[0]
      5. f == f1[0]
      import java.awt.Button;
      class CompareReference 
      {
          public static void main(String [] args) 
          {
              float f = 42.0f;
              float [] f1 = new float[2];
              float [] f2 = new float[2];
              float [] f3 = f1;
              long x = 42;
              f1[0] = 42.0f;
          }
      }
      

    • Options
    • A. 1, 2 and 3
    • B. 2, 4 and 5
    • C. 3, 4 and 5
    • D. 1, 4 and 5
    • Discuss
    • 2. Which one create an anonymous inner class from within class Bar?
      class Boo 
      {
          Boo(String s) { }
          Boo() { }
      }
      class Bar extends Boo 
      {
          Bar() { }
          Bar(String s) {super(s);}
          void zoo() 
          {
          // insert code here
          }
      }
      

    • Options
    • A. Boo f = new Boo(24) { };
    • B. Boo f = new Bar() { };
    • C. Bar f = new Boo(String s) { };
    • D. Boo f = new Boo.Bar(String s) { };
    • Discuss
    • 3. Which of the following code fragments inserted, will allow to compile?
      public class Outer 
      { 
          public void someOuterMethod() 
          {
              //Line 5 
          } 
          public class Inner { } 
          
          public static void main(String[] argv) 
          {
              Outer ot = new Outer(); 
              //Line 10
          } 
      } 
      

    • Options
    • A. new Inner(); //At line 5
    • B. new Inner(); //At line 10
    • C. new ot.Inner(); //At line 10
    • D. new Outer.Inner(); //At line 10
    • Discuss
    • 4. What will be the output of the program?
      public class Test178 
      { 
          public static void main(String[] args) 
          {
              String s = "foo"; 
              Object o = (Object)s; 
              if (s.equals(o)) 
              { 
                  System.out.print("AAA"); 
              } 
              else 
              {
                  System.out.print("BBB"); 
              } 
              if (o.equals(s)) 
              {
                  System.out.print("CCC"); 
              } 
              else 
              {
                  System.out.print("DDD"); 
              } 
          } 
      }
      

    • Options
    • A. AAACCC
    • B. AAADDD
    • C. BBBCCC
    • D. BBBDDD
    • Discuss
    • 5. What will be the output of the program?
      int i = (int) Math.random();
      

    • Options
    • A. i = 0
    • B. i = 1
    • C. value of i is undetermined
    • D. Statement causes a compile error
    • Discuss
    • 6. What will be the output of the program?
      class Tree { } 
      class Pine extends Tree { } 
      class Oak extends Tree { } 
      public class Forest1 
      { 
          public static void main (String [] args)
          { 
              Tree tree = new Pine(); 
              if( tree instanceof Pine ) 
                  System.out.println ("Pine"); 
              else if( tree instanceof Tree ) 
                  System.out.println ("Tree"); 
              else if( tree instanceof Oak ) 
                  System.out.println ( "Oak" ); 
              else 
                  System.out.println ("Oops "); 
          } 
      }
      

    • Options
    • A. Pine
    • B. Tree
    • C. Forest
    • D. Oops
    • Discuss
    • 7. What will be the output of the program?
      public class StringRef 
      {
          public static void main(String [] args) 
          {
              String s1 = "abc";
              String s2 = "def";
              String s3 = s2;   /* Line 7 */
              s2 = "ghi";
              System.out.println(s1 + s2 + s3);
          }
      }
      

    • Options
    • A. abcdefghi
    • B. abcdefdef
    • C. abcghidef
    • D. abcghighi
    • Discuss
    • 8. What will be the output of the program?
      public class ObjComp 
      {
          public static void main(String [] args ) 
          {
              int result = 0;
              ObjComp oc = new ObjComp();
              Object o = oc;
      
              if (o == oc)  
                  result = 1;
              if (o != oc)  
                  result = result + 10;
              if (o.equals(oc) )  
                  result = result + 100;
              if (oc.equals(o) )  
                  result = result + 1000;
      
              System.out.println("result = " + result);
          }
      }
      

    • Options
    • A. 1
    • B. 10
    • C. 101
    • D. 1101
    • Discuss
    • 9. What will be the output of the program?
      String d = "bookkeeper";
      d.substring(1,7);
      d = "w" + d;
      d.append("woo");  /* Line 4 */
      System.out.println(d);
      

    • Options
    • A. wookkeewoo
    • B. wbookkeeper
    • C. wbookkeewoo
    • D. Compilation fails.
    • Discuss
    • 10. What will be the output of the program?
      interface Count 
      {
          short counter = 0;
          void countUp();
      }
      public class TestCount implements Count 
      {
          public static void main(String [] args) 
          {
              TestCount t = new TestCount();
              t.countUp();
          }
          public void countUp() 
          {
              for (int x = 6; x>counter; x--, ++counter) /* Line 14 */
              {
                  System.out.print(" " + counter);
              }
          }
      }
      

    • Options
    • A. 0 1 2
    • B. 1 2 3
    • C. 0 1 2 3
    • D. 1 2 3 4
    • E. Compilation fails
    • Discuss


    Comments

    There are no comments.

Enter a new Comment