Java Programming - Threads - Discussion

Discussion Forum : Threads - Finding the output (Q.No. 15)
15.
What will be the output of the program?
public class ThreadTest extends Thread 
{ 
    public void run() 
    { 
        System.out.println("In run"); 
        yield(); 
        System.out.println("Leaving run"); 
    } 
    public static void main(String []argv) 
    { 
        (new ThreadTest()).start(); 
    } 
}
The code fails to compile in the main() method
The code fails to compile in the run() method
Only the text "In run" will be displayed
The text "In run" followed by "Leaving run" will be displayed
Answer: Option
Explanation:
No answer description is available. Let's discuss.
Discussion:
13 comments Page 1 of 2.

Vikas grover said:   1 decade ago
I think it will give an compile time error, as we yield is static method, hence how can we call a static method in non static method. If we correct this like Thread.yield () ; then it will print in run leaving run, because yield method stop current thread and allow other thread to invoke, hence there is no other thread and this will continue after calling yield.

Rksh25 said:   4 years ago
It works the same whether you call it with an instance or Thread.yield(). The reason is there no code to display in the main method after start() a child thread. write some SOPs in main after start a child thread. CPU gives the chance to the main thread. Since in this program there a 2 threads main, Thread-0.
(1)

Srinivas said:   9 years ago
Yield method causes to pause the current executing thread and give the chance for remaining waiting thread of the same priority. If there are no waiting threads or all waiting threads are having low priority then the same thread will continue it's execution.

Output will be :

In run.
Leaving run.

Sujata said:   6 years ago
Output is:
In run
Leaving run

Because, yeild() method only delays the current thread and gives the chance to same priority thread. In this case, there is no any thread present, so after some delay in will continue the execution.

Shanki said:   1 decade ago
yield() allow other Threads to execute by stopping the current Thread. Since there are no such other Threads present, therefore yield() not blocks the current Thread and execution continues after yield().

Meghna said:   7 years ago
yield() basically means that the thread is not doing anything particularly important and if any other threads or processes need to be run, they should.

Otherwise, the current thread will continue to run.

Vinu said:   9 years ago
Yes @Srinivas you are correct and also it is depending on "thread scheduler" since there is no other thread so same thread will continue the process. I hope this if I am wrong please tell.

Manish said:   1 decade ago
Yield is a static method. It makes the currently running thread head back to the runnable state to allow other threads of same priority to get their turn, but there is no such guarantee.

Venky said:   1 decade ago
Is this possible to call super class's static method in sub class's non-static method without specifying classname(ie.yeild()).

Smith said:   1 decade ago
What is output for this program ?

Like
"In run
Leaving run"
or
like
"In run Leaving run"


Post your comments here:

Your comments will be displayed after verification.