logo

CuriousTab

CuriousTab

Discussion


Home Java Programming Threads See What Others Are Saying!
  • Question
  • The following block of code creates a Thread using a Runnable target:
    Runnable target = new MyRunnable();
    Thread myThread = new Thread(target);
    
    Which of the following classes can be used to create the target, so that the preceding code compiles correctly?


  • Options
  • A. public class MyRunnable extends Runnable{public void run(){}}
  • B. public class MyRunnable extends Object{public void run(){}}
  • C. public class MyRunnable implements Runnable{public void run(){}}
  • D. public class MyRunnable implements Runnable{void run(){}}

  • Correct Answer
  • public class MyRunnable implements Runnable{public void run(){}} 

    Explanation
    The class correctly implements the Runnable interface with a legal public void run() method.

    Option A is incorrect because interfaces are not extended; they are implemented.

    Option B is incorrect because even though the class would compile and it has a valid public void run() method, it does not implement the Runnable interface, so the compiler would complain when creating a Thread with an instance of it.

    Option D is incorrect because the run() method must be public.


    More questions

    • 1. Given that EOFException and FileNotFoundException are both subclasses of IOException, and further assuming this block of code is placed into a class, which statement is most true concerning this code?
      System.out.print("Start ");
      try 
      {
          System.out.print("Hello world");
          throw new FileNotFoundException();
      }
      System.out.print(" Catch Here "); /* Line 7 */
      catch(EOFException e) 
      {
          System.out.print("End of file exception");
      }
      catch(FileNotFoundException e) 
      {
          System.out.print("File not found");
      }
      

    • Options
    • A. The code will not compile.
    • B. Code output: Start Hello world File Not Found.
    • C. Code output: Start Hello world End of file exception.
    • D. Code output: Start Hello world Catch Here File not found.
    • Discuss
    • 2. Which three piece of codes are equivalent to line 3?
      1. final int k = 4;
      2. public int k = 4;
      3. static int k = 4;
      4. abstract int k = 4;
      5. volatile int k = 4;
      6. protected int k = 4;
      public interface Foo 
      { 
          int k = 4; /* Line 3 */
      }
      

    • Options
    • A. 1, 2 and 3
    • B. 2, 3 and 4
    • C. 3, 4 and 5
    • D. 4, 5 and 6
    • Discuss
    • 3. After line 11 runs, how many objects are eligible for garbage collection?
      class X2 
      {
          public X2 x;
          public static void main(String [] args) 
          {
              X2 x2 = new X2();  /* Line 6 */
              X2 x3 = new X2();  /* Line 7 */
              x2.x = x3;
              x3.x = x2;
              x2 = new X2();
              x3 = x2; /* Line 11 */
              doComplexStuff();
          }
      }
      

    • Options
    • A. 0
    • B. 1
    • C. 2
    • D. 3
    • Discuss
    • 4. When is the Float object, created in line 3, eligible for garbage collection?
      public Object m() 
      {  
          Object o = new Float(3.14F); 
          Object [] oa = new Object[l];
          oa[0] = o; /* Line 5 */
          o = null;  /* Line 6 */
          oa[0] = null; /* Line 7 */
          return o; /* Line 8 */
      }
      

    • Options
    • A. just after line 5
    • B. just after line 6
    • C. just after line 7
    • D. just after line 8
    • Discuss
    • 5. What is the prototype of the default constructor?
      public class Test { }
      

    • Options
    • A. Test( )
    • B. Test(void)
    • C. public Test( )
    • D. public Test(void)
    • Discuss
    • 6. Which is valid in a class that extends class A?
      class A 
      {  
          protected int method1(int a, int b) 
          {
              return 0; 
          } 
      }
      

    • Options
    • A. public int method1(int a, int b) {return 0; }
    • B. private int method1(int a, int b) { return 0; }
    • C. public short method1(int a, int b) { return 0; }
    • D. static protected int method1(int a, int b) { return 0; }
    • Discuss
    • 7. After line 8 runs. how many objects are eligible for garbage collection?
      public class X 
      {
          public static void main(String [] args) 
          {
              X x = new X();
              X x2 = m1(x); /* Line 6 */
              X x4 = new X();
              x2 = x4; /* Line 8 */
              doComplexStuff();
          }
          static X m1(X mx) 
          {
              mx = new X();
              return mx;
          }
      }
      

    • Options
    • A. 0  
    • B. 1
    • C. 2
    • D. 3
    • Discuss
    • 8. Which of the following will directly stop the execution of a Thread?

    • Options
    • A. wait()
    • B. notify()
    • C. notifyall()
    • D. exits synchronized code
    • Discuss
    • 9. 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
    • 10. 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


    Comments

    There are no comments.

Enter a new Comment