logo

CuriousTab

CuriousTab

Discussion


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

  • Correct Answer
  • The notifyAll() method must be called from a synchronized context. 

    Explanation
    Option A is correct because the notifyAll() method (along with wait() and notify()) must always be called from within a synchronized context.

    Option B is incorrect because to call wait(), the thread must own the lock on the object that wait() is being invoked on, not the other way around.

    Option C is wrong because notify() is defined in java.lang.Object.

    Option D is wrong because notify() will not cause a thread to release its locks. The thread can only release its locks by exiting the synchronized code.


    More questions

    • 1. What will be the output of the program?
      public class WrapTest 
      {
          public static void main(String [] args) 
          {
              int result = 0;
              short s = 42;
              Long x = new Long("42");
              Long y = new Long(42);
              Short z = new Short("42");
              Short x2 = new Short(s);
              Integer y2 = new Integer("42");
              Integer z2 = new Integer(42);
      
              if (x == y) /* Line 13 */
                  result = 1;
              if (x.equals(y) ) /* Line 15 */
                  result = result + 10;
              if (x.equals(z) ) /* Line 17 */
                  result = result + 100;
              if (x.equals(x2) ) /* Line 19 */
                  result = result + 1000;
              if (x.equals(z2) ) /* Line 21 */
                  result = result + 10000;
      
              System.out.println("result = " + result);
          }
      }
      

    • Options
    • A. result = 1
    • B. result = 10
    • C. result = 11
    • D. result = 11010
    • Discuss
    • 2. Which three are valid declarations of a float?

      1. float f1 = -343;
      2. float f2 = 3.14;
      3. float f3 = 0x12345;
      4. float f4 = 42e7;
      5. float f5 = 2001.0D;
      6. float f6 = 2.81F;

    • Options
    • A. 1, 2, 4
    • B. 2, 3, 5
    • C. 1, 3, 6
    • D. 2, 4, 6
    • Discuss
    • 3. Which statement is true?

    • Options
    • A. catch(X x) can catch subclasses of X where X is a subclass of Exception.
    • B. The Error class is a RuntimeException.
    • C. Any statement that can throw an Error must be enclosed in a try block.
    • D. Any statement that can throw an Exception must be enclosed in a try block.
    • Discuss
    • 4. What will be the output of the program?
      import java.util.*;
      public class NewTreeSet2 extends NewTreeSet 
      {
          public static void main(String [] args) 
          {
              NewTreeSet2 t = new NewTreeSet2();
              t.count();
          }
      }
      protected class NewTreeSet
      {
          void count() 
          {
              for (int x = 0; x < 7; x++,x++ ) 
              {
                  System.out.print(" " + x);
              }
          }
      }
      

    • Options
    • A. 0 2 4
    • B. 0 2 4 6
    • C. Compilation fails at line 2
    • D. Compilation fails at line 10
    • Discuss
    • 5. What will be the output of the program?
      int x = 3; 
      int y = 1; 
      if (x = y) /* Line 3 */
      {
          System.out.println("x =" + x); 
      }
      

    • Options
    • A. x = 1
    • B. x = 3
    • C. Compilation fails.
    • D. The code runs with no output.
    • Discuss
    • 6. What will be the output of the program?
      public static void main(String[] args) 
      {
          Object obj = new Object() 
          {
              public int hashCode() 
              {
                  return 42;
              }
          }; 
          System.out.println(obj.hashCode()); 
      }
      

    • Options
    • A. 42
    • B. Runtime Exception
    • C. Compile Error at line 2
    • D. Compile Error at line 5
    • Discuss
    • 7. What will be the output of the program?
      public class SyncTest 
      {
          public static void main (String [] args) 
          {
              Thread t = new Thread() 
              {
                  Foo f = new Foo();
                  public void run() 
                  {
                      f.increase(20);
                  }
              };
          t.start();
          }
      }
      class Foo 
      {
          private int data = 23;
          public void increase(int amt) 
          {
              int x = data;
              data = x + amt;
          }
      }
      
      and assuming that data must be protected from corruption, what?if anything?can you add to the preceding code to ensure the integrity of data?

    • Options
    • A. Synchronize the run method.
    • B. Wrap a synchronize(this) around the call to f.increase().
    • C. The existing code will cause a runtime exception.
    • D. Synchronize the increase() method
    • Discuss
    • 8. What is the most restrictive access modifier that will allow members of one class to have access to members of another class in the same package?

    • Options
    • A. public
    • B. abstract
    • C. protected
    • D. synchronized
    • E. default access
    • Discuss
    • 9. Which of the following statements is true?

    • Options
    • A. If assertions are compiled into a source file, and if no flags are included at runtime, assertions will execute by default.
    • B. As of Java version 1.4, assertion statements are compiled by default.
    • C. With the proper use of runtime arguments, it is possible to instruct the VM to disable assertions for a certain class, and to enable assertions for a certain package, at the same time.
    • D. When evaluating command-line arguments, the VM gives -ea flags precedence over -da flags.
    • Discuss
    • 10. What will be the output of the program?
      public class Switch2 
      {
          final static short x = 2;
          public static int y = 0;
          public static void main(String [] args) 
          {
              for (int z=0; z < 3; z++) 
              {
                  switch (z) 
                  {
                      case x: System.out.print("0 ");
                      case x-1: System.out.print("1 ");
                      case x-2: System.out.print("2 ");
                  }
              }
          }
      }
      

    • Options
    • A. 0 1 2
    • B. 0 1 2 1 2 2
    • C. 2 1 0 1 0 0
    • D. 2 1 2 0 1 2
    • Discuss


    Comments

    There are no comments.

Enter a new Comment