join方法使其他线程都停止,也包括主线程吗?
这篇文章说得很清楚了。
当前的线程阻塞,等待调用join()的线程执行。当前的线程可以是 “调用了join()的线程之外的任意线程”。
join是Thread的实例方法,官方解释为:等待该线程终止。
其作用就是将调用join的线程优先执行,当前正在执行的线程阻塞,直到调用join方法的线程执行完毕或者被打断,主要用于线程之间的交互。
还有两个重载的方法:
1、join(long millis),等待该线程终止的时间最长为 millis 毫秒。为 0 意味着要一直等下去。
2、join(long millis, int nanos),等待该线程终止的时间最长为 millis 毫秒 + nanos 纳秒
join不是让所有线程都停止,join只是让主线程停止。
看下面的代码,如果把thread.sleep注释掉,再运行,有一定概率程咬金打完都谢幕了,军队线程还在执行。
这说明join只是让主线程停止,而不是让所有线程都停止。这一点老师讲的应该是有误的。
输出结束语的就是主线程,所以也包括
是的,主线程把CPU控制权交出来给调用join()方法的线程。