logo

CuriousTab

CuriousTab

Discussion


Home Java Programming Threads Comments

  • Question
  • Which of the following will directly stop the execution of a Thread?


  • Options
  • A. wait()
  • B. notify()
  • C. notifyall()
  • D. exits synchronized code

  • Correct Answer
  • wait() 

    Explanation
    Option A is correct. wait() causes the current thread to wait until another thread invokes the notify() method or the notifyAll() method for this object.

    Option B is wrong. notify() - wakes up a single thread that is waiting on this object's monitor.

    Option C is wrong. notifyAll() - wakes up all threads that are waiting on this object's monitor.

    Option D is wrong. Typically, releasing a lock means the thread holding the lock (in other words, the thread currently in the synchronized method) exits the synchronized method. At that point, the lock is free until some other thread enters a synchronized method on that object. Does entering/exiting synchronized code mean that the thread execution stops? Not necessarily because the thread can still run code that is not synchronized. I think the word directly in the question gives us a clue. Exiting synchronized code does not directly stop the execution of a thread.


    Threads problems


    Search Results


    • 1. What is the name of the method used to start a thread execution?

    • Options
    • A. init();
    • B. start();
    • C. run();
    • D. resume();
    • Discuss
    • 2. Assume the following method is properly synchronized and called from a thread A on an object B:

      wait(2000);

      After calling this method, when will the thread A become a candidate to get another turn at the CPU?


    • Options
    • A. After thread A is notified, or after two seconds.
    • B. After the lock on B is released, or after two seconds.
    • C. Two seconds after thread A is notified.
    • D. Two seconds after lock B is released.
    • Discuss
    • 3. Which will contain the body of the thread?

    • Options
    • A. run();
    • B. start();
    • C. stop();
    • D. main();
    • Discuss
    • 4. Which class or interface defines the wait(), notify(),and notifyAll() methods?

    • Options
    • A. Object
    • B. Thread
    • C. Runnable
    • D. Class
    • Discuss
    • 5. Which of the following will not directly cause a thread to stop?

    • Options
    • A. notify()
    • B. wait()
    • C. InputStream access
    • D. sleep()
    • Discuss
    • 6. Which of these will create and start this thread?
      public class MyRunnable implements Runnable 
      {
          public void run() 
          {
              // some code here
          }
      }
      

    • Options
    • A. new Runnable(MyRunnable).start();
    • B. new Thread(MyRunnable).run();
    • C. new Thread(new MyRunnable()).start();
    • D. new MyRunnable().start();
    • Discuss
    • 7. What will be the output of the program?
      public class CommandArgsThree 
      {
          public static void main(String [] args) 
          {
              String [][] argCopy = new String[2][2];
              int x;
              argCopy[0] = args;
              x = argCopy[0].length;
              for (int y = 0; y < x; y++) 
              {
                  System.out.print(" " + argCopy[0][y]);
              }
          }
      }
      
      and the command-line invocation is

      > java CommandArgsThree 1 2 3


    • Options
    • A. 0 0
    • B. 1 2
    • C. 0 0 0
    • D. 1 2 3
    • Discuss
    • 8. What will be the output of the program?
      public class X 
      {
          public static void main(String [] args) 
          {
              String names [] = new String[5];
              for (int x=0; x < args.length; x++)
                  names[x] = args[x];
              System.out.println(names[2]);
          }
      }
      
      and the command line invocation is

      > java X a b


    • Options
    • A. names
    • B. null
    • C. Compilation fails
    • D. An exception is thrown at runtime
    • Discuss
    • 9. What will be the output of the program, if this code is executed with the command line:

      > java F0091 world

      public class F0091 
      {    
          public void main( String[] args ) 
          {  
              System.out.println( "Hello" + args[0] ); 
          } 
      }
      

    • Options
    • A. Hello
    • B. Hello Foo91
    • C. Hello world
    • D. The code does not run.
    • Discuss
    • 10. What will be the output of the program?
      public class CommandArgsTwo 
      {
          public static void main(String [] argh) 
          {
              int x;
              x = argh.length;
              for (int y = 1; y <= x; y++) 
              {
                  System.out.print(" " + argh[y]);
              }
          }
      }
      
      and the command-line invocation is

      > java CommandArgsTwo 1 2 3


    • Options
    • A. 0 1 2
    • B. 1 2 3
    • C. 0 0 0
    • D. An exception is thrown at runtime
    • Discuss


    Comments

    There are no comments.

Enter a new Comment