. What is the output for the below code ? public class Test{ public static void main(String argv[]){ Test1 pm1 = new Test1("One"); pm1.run(); Test1 pm2 = new Test1("Two"); pm2.run(); } } class Test1 extends Thread{ private String sTname=""; Test1(String s){ sTname = s; } public void run(){ for(int i =0; i < 2 ; i++){ try{ sleep(1000); }catch(InterruptedException e){} yield(); System.out.println(sTname); } } }

  1. Compile error

  2. One One Two Two

  3. One Two One Two

  4. One Two


Correct Option: B

AI Explanation

To determine the output of the given code, let's go through the code step by step:

  1. In the Test class's main method:

    • Create an instance of the Test1 class named pm1 and pass the string "One" as an argument to its constructor.
    • Call the run method of pm1.
    • Create another instance of the Test1 class named pm2 and pass the string "Two" as an argument to its constructor.
    • Call the run method of pm2.
  2. In the Test1 class:

    • Declare a private instance variable sTname of type String and initialize it with an empty string.
    • Define a constructor that takes a string argument and assigns it to the sTname variable.
    • Override the run method of the Thread class.
    • In the run method:
      • Iterate from 0 to 1 (two iterations).
      • Within each iteration:
      • Use the sleep method to pause the execution for 1000 milliseconds (1 second).
      • Use the yield method to give up the CPU to other threads.
      • Print the value of sTname.

Based on the above code, the output will be:

One One Two Two

Therefore, the correct answer is B) One One Two Two.

Find more quizzes: