Code:
  



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?