Java Programming - Threads - Discussion
Discussion Forum : Threads - Finding the output (Q.No. 4)
4.
What will be the output of the program?
class s1 implements Runnable
{
int x = 0, y = 0;
int addX() {x++; return x;}
int addY() {y++; return y;}
public void run() {
for(int i = 0; i < 10; i++)
System.out.println(addX() + " " + addY());
}
public static void main(String args[])
{
s1 run1 = new s1();
s1 run2 = new s1();
Thread t1 = new Thread(run1);
Thread t2 = new Thread(run2);
t1.start();
t2.start();
}
}
Answer: Option
Explanation:
Both threads are operating on different sets of instance variables. If you modify the code of the run() method to print the thread name it will help to clarify the output:
public void run(){
for(int i = 0; i < 10; i++)
System.out.println(
Thread.currentThread().getName() + ": " + addX() + " " + addY()
);
}
Discussion:
13 comments Page 2 of 2.
Ramesh said:
7 years ago
Here if we will use synchronized to run method then we will get the result as option B. Because one thread will fully complete the loop then the other will access run method.
Raghu said:
6 years ago
I cannot understand the program please explain in detail.
Gunasekaran said:
5 years ago
Threads will executes in any order we cannot except this order execute.
Post your comments here:
Quick links
Quantitative Aptitude
Verbal (English)
Reasoning
Programming
Interview
Placement Papers