logo

CuriousTab

CuriousTab

Discussion


Home Java Programming Threads See What Others Are Saying!
  • Question
  • Which three guarantee that a thread will leave the running state?

    1. yield()
    2. wait()
    3. notify()
    4. notifyAll()
    5. sleep(1000)
    6. aLiveThread.join()
    7. Thread.killThread()


  • Options
  • A. 1, 2 and 4
  • B. 2, 5 and 6
  • C. 3, 4 and 7
  • D. 4, 5 and 7

  • Correct Answer
  • 2, 5 and 6 

    Explanation
    (2) is correct because wait() always causes the current thread to go into the object's wait pool.

    (5) is correct because sleep() will always pause the currently running thread for at least the duration specified in the sleep argument (unless an interrupted exception is thrown).

    (6) is correct because, assuming that the thread you're calling join() on is alive, the thread calling join() will immediately block until the thread you're calling join() on is no longer alive.

    (1) is wrong, but tempting. The yield() method is not guaranteed to cause a thread to leave the running state, although if there are runnable threads of the same priority as the currently running thread, then the current thread will probably leave the running state.

    (3) and (4) are incorrect because they don't cause the thread invoking them to leave the running state.

    (7) is wrong because there's no such method.


    More questions

    • 1. Which of the following line of code is suitable to start a thread?
      class X implements Runnable 
      { 
          public static void main(String args[]) 
          {
              /* Missing code? */
          } 
          public void run() {} 
      }
      

    • Options
    • A. Thread t = new Thread(X);
    • B. Thread t = new Thread(X); t.start();
    • C. X run = new X(); Thread t = new Thread(run); t.start();
    • D. Thread t = new Thread(); x.run();
    • Discuss
    • 2. What will be the output of the program?
      try 
      {
          Float f1 = new Float("3.0");
          int x = f1.intValue();
          byte b = f1.byteValue();
          double d = f1.doubleValue();
          System.out.println(x + b + d);
      }
      catch (NumberFormatException e) /* Line 9 */
      {
          System.out.println("bad number"); /* Line 11 */
      }
      

    • Options
    • A. 9.0
    • B. bad number
    • C. Compilation fails on line 9.
    • D. Compilation fails on line 11.
    • Discuss
    • 3. What will be the output of the program?
      String a = "newspaper";
      a = a.substring(5,7);
      char b = a.charAt(1);
      a = a + b;
      System.out.println(a);
      

    • Options
    • A. apa
    • B. app
    • C. apea
    • D. apep
    • Discuss
    • 4. Which statement is true?

    • Options
    • A. The notifyAll() method must be called from a synchronized context.
    • B. To call wait(), an object must own the lock on the thread.
    • C. The notify() method is defined in class java.lang.Thread.
    • D. The notify() method causes a thread to immediately release its locks.
    • Discuss
    • 5. Which statement is true?
      class Test1 
      {
          public int value;
          public int hashCode() { return 42; }
      }
      class Test2 
      {
          public int value;
          public int hashcode() { return (int)(value^5); }
      }
      

    • Options
    • A. class Test1 will not compile.
    • B. The Test1 hashCode() method is more efficient than the Test2 hashCode() method.
    • C. The Test1 hashCode() method is less efficient than the Test2 hashCode() method.
    • D. class Test2 will not compile.
    • Discuss
    • 6. Assuming that the equals() and hashCode() methods are properly implemented, if the output is "x = 1111", which of the following statements will always be true?
      x = 0;
      if (x1.hashCode() != x2.hashCode() )  x = x + 1;
      if (x3.equals(x4) )  x = x + 10;
      if (!x5.equals(x6) ) x = x + 100;
      if (x7.hashCode() == x8.hashCode() )  x = x + 1000;
      System.out.println("x = " + x);
      

    • Options
    • A. x2.equals(x1)
    • B. x3.hashCode() == x4.hashCode()
    • C. x5.hashCode() != x6.hashCode()
    • D. x8.equals(x7)
    • Discuss
    • 7. The static method Thread.currentThread() returns a reference to the currently executing Thread object. What is the result of this code?
      class Test 
      {
          public static void main(String [] args) 
          {
              printAll(args);
          }
      
          public static void printAll(String[] lines) 
          {
              for(int i = 0; i < lines.length; i++)
              {
                  System.out.println(lines[i]);
                  Thread.currentThread().sleep(1000);
              }
          }
      }
      

    • Options
    • A. Each String in the array lines will output, with a 1-second pause.
    • B. Each String in the array lines will output, with no pause in between because this method is not executed in a Thread.
    • C. Each String in the array lines will output, and there is no guarantee there will be a pause because currentThread() may not retrieve this thread.
    • D. This code will not compile.
    • Discuss
    • 8. Which answer most closely indicates the behavior of the program?
      public class MyProgram 
      {
          public static void throwit() 
          {
              throw new RuntimeException();
          }
          public static void main(String args[])
          {
              try 
              {
                  System.out.println("Hello world ");
                  throwit();
                  System.out.println("Done with try block ");
              }
              finally 
              {
                  System.out.println("Finally executing ");
              }
          }
      }
      

    • Options
    • A. The program will not compile.
    • B. The program will print Hello world, then will print that a RuntimeException has occurred, then will print Done with try block, and then will print Finally executing.
    • C. The program will print Hello world, then will print that a RuntimeException has occurred, and then will print Finally executing.
    • D. The program will print Hello world, then will print Finally executing, then will print that a RuntimeException has occurred.
    • Discuss
    • 9. Which two code fragments will compile?
      1. interface Base2 implements Base {}
      2. abstract class Class2 extends Base
        { public boolean m1(){ return true; }}
      3. abstract class Class2 implements Base {}
      4. abstract class Class2 implements Base
        { public boolean m1(){ return (7 > 4); }}
      5. abstract class Class2 implements Base
        { protected boolean m1(){ return (5 > 7) }}
      interface Base 
      {
          boolean m1 ();
          byte m2(short s);
      }
      

    • Options
    • A. 1 and 2
    • B. 2 and 3
    • C. 3 and 4
    • D. 1 and 5
    • Discuss
    • 10. Which statement, if placed in a class other than MyOuter or MyInner, instantiates an instance of the nested class?
      public class MyOuter 
      {
          public static class MyInner 
          {
              public static void foo() { }
          }
      }
      

    • Options
    • A. MyOuter.MyInner m = new MyOuter.MyInner();
    • B. MyOuter.MyInner mi = new MyInner();
    • C. MyOuter m = new MyOuter();

      MyOuter.MyInner mi = m.new MyOuter.MyInner();

    • D. MyInner mi = new MyOuter.MyInner();
    • Discuss


    Comments

    There are no comments.

Enter a new Comment