A,B,C。在B线程调用A.join(B释放其CPU执行权),C线程调用B.join可以按A->B->C顺序执行线程。
join有3个重载的方法:
void join()
当前线程等该加入该线程后面,等待该线程终止。
void join(long millis)
当前线程等待该线程终止的时间最长为 millis 毫秒。 如果在millis时间内,该线程没有执行完,那么当前线程进入就绪状态,重新等待cpu调度
void join(long millis,int nanos)
等待该线程终止的时间最长为 millis 毫秒 + nanos 纳秒。如果在millis时间内,该线程没有执行完,那么当前线程进入就绪状态,重新等待cpu调度
原理:join底层使用wait方法。
具体可以查看该文章(Java Thread的join() 之刨根问底)