File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
http://aspose.com/file-tools
The moose likes Programmer Certification (SCJP/OCPJP) and the fly likes Threads Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Java 8 in Action this week in the Java 8 forum!
JavaRanch » Java Forums » Certification » Programmer Certification (SCJP/OCPJP)
Bookmark "Threads " Watch "Threads " New topic
Author

Threads

GK
Greenhorn

Joined: Jan 25, 2001
Posts: 26
My Q
-------
What will be the o\p n y???
--------
class B implements Runnable
{
int i = 10;
public void run()
{
i = 20;
}
}
public class H
{
public static void main(String [] argv)
{
B b = new B();
Thread t = new Thread(b);
b.i = 30;
System.out.println("Value is " + b.i);
}
}
---------------
Want the thread alter the value of i???
Gunjan
thiru
Greenhorn

Joined: Feb 22, 2001
Posts: 6
Hi,
I feel the out put should be 30 only.Because ur not calling the instanciating the thread.i,e thread will start executing only when you call t.start().
I feel the out put should be 30.
Thiru
Michael Burke
Ranch Hand

Joined: Jul 29, 2000
Posts: 103
In order for the thread to alter the value of i it's start method has to be called. t.start().
GK
Greenhorn

Joined: Jan 25, 2001
Posts: 26
Originally posted by gunjan kuwadia:
My Q
well freinds a mistake , making changes in the code
-------
What will be the o\p n y???
--------
class B implements Runnable
{
int i = 10;
public void run()
{
i = 20;
}
}
public class H
{
public static void main(String [] argv)
{
B b = new B();
Thread t = new Thread(b);
t.start();
b.i = 30;
System.out.println("Value is " + b.i);
}
}
---------------
Want the thread alter the value of i???
Gunjan

sandeep bagati
Ranch Hand

Joined: Feb 22, 2001
Posts: 62
Hi gunjan,
(I have already replied to u for both cases in Threads and synchronisation section!!!pasting it here)
It will be simply 30 coz after you call
Thread t = new Thread(b);
a new thread is not started unless you write t.start();
Now If you start the thread(t.start()) it will still print 30 unless you stop main thread for some time after b.i=30;(say by calling sleep).Then it will print 20;
It is main that is still running and start() just makes the other thread ready to start not start .Actually it depends on Thread Sheduler to decide which thread should use the cpu.
I think since both have same priority the main thread continues to use the cpu .

 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Threads
 
Similar Threads
Help how its working
Little challenge
Q from JQplus
Threads
about polymorphism!