1、使用场景:线程A执行到一半,需要一个数据,这个数据需要线程B去执行修改,只有B修改完成之后,A才能继续操作
2、线程A的run方法里面,调用线程B的join方法,这个时候,线程A会等待线程B运行完成之后,再接着运行
public class Main {
public static void main(String[] args) {
Thread thread = new Thread(() -> {
System.out.println(Thread.currentThread().getName()+"开始运行");
try {
Thread.sleep(3000L);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+"结束运行");
}, "线程1");
new Thread(() -> {
System.out.println(Thread.currentThread().getName()+"开始运行");
thread.start(); // 线程1运行完成
try {
thread.join(); // 调用线程1的join方法
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+"运行结束");
}, "线程2").start();
}
}
# 控制台输出结果:
线程2开始运行
线程1开始运行
线程1结束运行
线程2运行结束