其实Join方法实现是通过
wait(小提示:Object 提供的方法)进行线程控制的。 当main线程调用t.join时候,main线程会获得线程对象t的锁(wait 意味着拿到该对象的锁),调用该对象的wait(等待时间),直到该对象唤醒main线程,比如退出后,
线程对象t退出后,会在native方法中调用线程对象的natifyAll方法,然后执行main线程的后续部分代码。
参考以下文章
http://www.blogjava.net/vincent/archive/2008/08/23/223912.html