概念:
thread.join() 方法的主要作用是让当前线程(通常是父线程或主线程)等待另一个线程(子线程)执行完毕后再继续执行。具体来说,当一个线程调用了另一个线程的join方法后,当前线程会暂停执行,直到被join的线程执行完毕。这样,可以确保在子线程完成其任务后再继续执行父线程的操作
验证:
1、示例代码
public class TestThreadOne {
String name = "test";
public void setNameStr(String name) {
this.name = name;
}
public void bgSetName() throws Exception {
Thread t = new Thread() {
@Override
public void run() {
setNameStr("test2");
}
};
t.start();
t.join();
System.out.println(name);
}
public void bgSetNameTwo() throws Exception {
Thread t = new Thread() {
@Override
public void run() {
setNameStr("test3");
}
};
t.start();
//t.join();
System.out.println(name);
}
public static void main(String[] args) throws Exception {
new TestThreadOne().bgSetName();
new TestThreadOne().bgSetNameTwo();
System.out.println("主线程执行完毕了");
}
}
输出:
test2
test
主线程执行完毕了
小结:
1、由结果可以看出,由两个子线程给父线程(主线程)中的name变量赋值
2、一个线程使用join()方法、一个线程不使用join()方法,结果使用 join() 方法可以正确赋值主线程的变量,不使用 join() 方法无法正确赋值主线程变量
3、得出结论,thread.join() 方法具有等待作用,也就是主线程会等待调用join()方法的子线程执行完毕后,主线程才会继续执行