Abalfazl
January 6th, 2010, 11:12 AM
public class Main {
public static void main(String[] args){
new SimpleThread("Fiji").start();
Thread a=new SimpleThread("Jamaica");
a.start();
try{
a.join();
}
catch (InterruptedException ie) {
System.out.println(ie.getMessage());
}
}
}
class SimpleThread extends Thread {
public SimpleThread(String str) {
super(str);
}
public void run() {
for (int i = 0; i < 7; i++) {
System.out.println(i + " " + getName());
}
System.out.println("DONE! " + getName());
}
}
Output of this program:
0 Fiji
0 Jamaica
1 Fiji
1 Jamaica
2 Jamaica
2 Fiji
3 Fiji
4 Fiji
3 Jamaica
5 Fiji
4 Jamaica
6 Fiji
5 Jamaica
DONE! Fiji
6 Jamaica
DONE! Jamaica
http://www.edumax.com/java-basics-thread-join.html
Using A.join() within a thread is tantamount to making the current thread sleep until thread 'A' completes execution.
In this program , a.join must cause another thread stops , until a dies.
Then the output must be this :
0 Jamaica
1 Jamaica
2 Jamaica
3 Jamaica
4 Jamaica
......
Why isn't that?
public static void main(String[] args){
new SimpleThread("Fiji").start();
Thread a=new SimpleThread("Jamaica");
a.start();
try{
a.join();
}
catch (InterruptedException ie) {
System.out.println(ie.getMessage());
}
}
}
class SimpleThread extends Thread {
public SimpleThread(String str) {
super(str);
}
public void run() {
for (int i = 0; i < 7; i++) {
System.out.println(i + " " + getName());
}
System.out.println("DONE! " + getName());
}
}
Output of this program:
0 Fiji
0 Jamaica
1 Fiji
1 Jamaica
2 Jamaica
2 Fiji
3 Fiji
4 Fiji
3 Jamaica
5 Fiji
4 Jamaica
6 Fiji
5 Jamaica
DONE! Fiji
6 Jamaica
DONE! Jamaica
http://www.edumax.com/java-basics-thread-join.html
Using A.join() within a thread is tantamount to making the current thread sleep until thread 'A' completes execution.
In this program , a.join must cause another thread stops , until a dies.
Then the output must be this :
0 Jamaica
1 Jamaica
2 Jamaica
3 Jamaica
4 Jamaica
......
Why isn't that?