| Refresh | Home EGTry.com

join ask all children threads to finish their jobs and join the current thread


Join.java

/*
 * Copyright@ 2011 www.egtry.com
 */

package egtry.thread;

//join - wait on the target thread to finish
public class Join extends Thread {
  private Join child;
  public static void main(String[] args) {
	  
	  Join join=new Join(10);
	  join.start();
	  
	  System.out.println("All Done");
  }
  
  public Join(int number) {
	  super(""+number);
	  if (number >0) {
		  child=new Join(number-1);
	  }
  }
  
  @Override
  public void run() {
	  System.out.println("Start Thread: "+this.getId());
	  if (child!=null) {
		  child.start();
		  try {
			  child.join();
		  } catch (InterruptedException e) {
			  System.out.println("Interrupted: Thread: "+this.getId()+" wait on its child thread:"+child.getId());
		  }
	  }
	  System.out.println("End Thread: "+this.getId());
  }
}



Output

All Done
Start Thread: 8
Start Thread: 9
Start Thread: 10
Start Thread: 11
Start Thread: 12
Start Thread: 13
Start Thread: 14
Start Thread: 15
Start Thread: 16
Start Thread: 17
Start Thread: 18
End Thread: 18
End Thread: 17
End Thread: 16
End Thread: 15
End Thread: 14
End Thread: 13
End Thread: 12
End Thread: 11
End Thread: 10
End Thread: 9
End Thread: 8