public final synchronized voidjoin(long millis)
throws InterruptedException {
long base = System.currentTimeMillis();
long now =0;if(millis ==0){while(isAlive()){wait(0);}}else{while(isAlive()){//这里主要通过isAlive() 来判断目标线程是否已经执行完来决定 join
long delay = millis - now;if(delay <=0){break;}wait(delay);
now = System.currentTimeMillis()- base;}}}public State getState(){// 通过这里判断线程状态return sun.misc.VM.toThreadState(threadStatus);}//其它都是些C/C++写的方法,看不见就不介绍了。