面试题:有 3 个独立的线程,一个只会输出 A,一个只会输出 B,一个只会输出 C,在三个线程启动的情况下,请用合理的方式让他们按顺序打印 ABC。
使用join
join() 的核心作用是:让当前线程(通常是主线程)等待调用 join() 的那个线程执行完毕后再继续执行。
以下是具体的代码实现和原理解析:
public class JoinPrintABC {
public static void main(String[] args) throws InterruptedException {
// 1. 创建三个线程,分别负责打印 A、B、C
Thread threadA = new Thread(() -> System.out.print("A"));
Thread threadB = new Thread(() -> System.out.print("B"));
Thread threadC = new Thread(() -> System.out.print("C"));
// 2. 启动线程 A
threadA.start();
// 3. 主线程等待 A 执行完,才往下走
threadA.join();
// 4. 启动线程 B (此时 A 肯定已经打完了)
threadB.start();
// 5. 主线程等待 B 执行完
threadB.join();
// 6. 启动线程 C (此时 B 肯定已经打完了)
threadC.start();
// 7. 主线程等待 C 执行完
threadC.join();
System.out.println("\n完成");
}
}
