Join方法概述
join作用是让其他线程变为等待。
t1.join(); // 让其他线程变为等待,直到当前t1线程执行完毕,才释放。
thread.Join把指定的线程加入到当前线程,可以将两个交替执行的线程合并为顺序执行的线程。比如在线程B中调用了线程A的Join()方法,直到线程A执行完毕后,才会继续执行线程B。
class JoinThread implements Runnable {
public void run() {
for (int i = 0; i < 100; i++) {
System.out.println(Thread.currentThread().getName() + "---i:" + i);
}
}
}
public class JoinThreadDemo {
public static void main(String[] args) {
JoinThread joinThread = new JoinThread();
Thread t1 = new Thread(joinThread);
Thread t2 = new Thread(joinThread);
t1.start();
t2.start();
try {
//其他线程变为等待状态,等t1线程执行完成之后才能执行join方法。
t1.join();
} catch (Exception e) {
}
for (int i = 0; i < 100; i++) {
System.out.println("main ---i:" + i);
}
}
}
运行结果:
Thread-0---i:0
Thread-1---i:0
Thread-0---i:1
Thread-0---i:2
Thread-1---i:1
main ---i:0
Thread-1---i:2
main ---i:1
main ---i:2
多次运行发现,Thread-0 永远在执行完毕后才会打印main ---i ,执行thread-0时,其他线程变为阻塞状态