join()方法用于让当前执行线程等待join线程执行结束。其实现原理是不停的检查join线程是否存活,如果join线程存活则让当前线程永远等待。
join()方法部分实现细节
while(isAlive())
{
wait(0)
}
其中wait(0)表示永远等待下去。
join线程中止后,线程的this.notifyAll()方法会被调用,调用notifyAll()是在JVM里调用的所有在JDK中看不到,大家可以看JVM源码
示例程序:
public calss ThreadTest{
public static void main(String[] args) throws Exception
{
Thread parser1 = new Thread(new Runnable(){
public void run(){}
});
Thread parser2 = new Thread(new Runnable(){
public void run(){}
});
parser1.start();
parser2.start();
parser1.join();
parser2.join();
System.out.println("all parser finish");
}
}