如大家所了解的,线程生命周期就是线程从出生到结束的全过程。Java 里主要分6 种状态,包括新建、可运行、阻塞、等待、计时等待和终止 。
线程"插队"
Thread 提供了让一个线程等待另一个线程完成的方法------ join () 方法。当在某个程序执行流中调用其他线程的 join () 方法时,调用线程将被阻塞,直到被 join () 方法加入的 join 线程执行完为止。

以下是一个使用 join 方法的 Java 多线程代码示例:
public class JoinThreadExample {
public static void main(String[] args) throws InterruptedException {
Thread t1 = new Thread(() -> {
System.out.println("Thread 1 started");
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Thread 1 finished");
});
Thread t2 = new Thread(() -> {
System.out.println("Thread 2 started");
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Thread 2 finished");
});
t1.start();
t2.start();
// 使用 join 方法,让主线程等待 t1 和 t2 线程执行完毕后再继续执行
t1.join();
t2.join();
System.out.println("All threads finished");
}
}
在这个例子中,我们创建了两个线程 t1 和 t2 ,它们分别会休眠 5 秒和 3 秒,然后打印出一条信息。我们使用 join 方法将主线程阻塞,直到 t1 和 t2 线程执行完毕后再继续执行主线程。最后,我们打印出一条 "All threads finished" 消息,表示所有线程都已经执行完毕。