logo

CuriousTab

CuriousTab

Discussion


Home Java Programming Threads See What Others Are Saying!
  • Question
  • Which two statements are true?

    1. Deadlock will not occur if wait()/notify() is used
    2. A thread will resume execution as soon as its sleep duration expires.
    3. Synchronization can prevent two objects from being accessed by the same thread.
    4. The wait() method is overloaded to accept a duration.
    5. The notify() method is overloaded to accept a duration.
    6. Both wait() and notify() must be called from a synchronized context.


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

  • Correct Answer
  • 4 and 6 

    Explanation
    Statements (4) and (6) are correct. (4) is correct because the wait() method is overloaded to accept a wait duration in milliseconds. If the thread has not been notified by the time the wait duration has elapsed, then the thread will move back to runnable even without having been notified.

    (6) is correct because wait()/notify()/notifyAll() must all be called from within a synchronized, context. A thread must own the lock on the object its invoking wait()/notify()/notifyAll() on.

    (1) is incorrect because wait()/notify() will not prevent deadlock.

    (2) is incorrect because a sleeping thread will return to runnable when it wakes up, but it might not necessarily resume execution right away. To resume executing, the newly awakened thread must still be moved from runnable to running by the scheduler.

    (3) is incorrect because synchronization prevents two or more threads from accessing the same object.

    (5) is incorrect because notify() is not overloaded to accept a duration.


    More questions

    • 1. 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
    • 2. 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
    • 3. 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
    • 4. 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
    • 5. Which three form part of correct array declarations?

      1. public int a [ ]
      2. static int [ ] a
      3. public [ ] int a
      4. private int a [3]
      5. private int [3] a [ ]
      6. public final int [ ] a

    • Options
    • A. 1, 3, 4
    • B. 2, 4, 5
    • C. 1, 2, 6
    • D. 2, 5, 6
    • Discuss
    • 6. What will be the output of the program?
      public class X 
      { 
          public static void main(String [] args) 
          {
              try 
              {
                  badMethod();  
                  System.out.print("A"); 
              }  
              catch (Exception ex) 
              {
                  System.out.print("B"); 
              }  
              finally 
              {
                  System.out.print("C"); 
              }  
              System.out.print("D"); 
          }  
          public static void badMethod() {} 
      } 
      

    • Options
    • A. AC
    • B. BC
    • C. ACD
    • D. ABCD
    • Discuss
    • 7. 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
    • 8. 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
    • 9. 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
    • 10. 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


    Comments

    There are no comments.

Enter a new Comment