Java 多线程:如何让主线程等待子线程完成?
在 Java 多线程编程中,我们经常需要让主线程等待子线程执行完成,才能继续执行后续操作。常用的方法是使用 join() 方法。
join() 方法会阻塞当前线程(主线程),直到被调用的线程(子线程)执行完毕。
示例:
class MyThread extends Thread {
@Override
public void run() {
// 子线程执行的代码
System.out.println("子线程执行完毕");
}
}
public class Main {
public static void main(String[] args) throws InterruptedException {
MyThread thread = new MyThread();
thread.start();
thread.join(); // 主线程等待子线程执行完成
System.out.println("主线程继续执行");
}
}
解释:
- 创建一个子线程
MyThread,并启动它。 - 主线程调用
thread.join()方法,阻塞自身,等待MyThread执行完成。 - 当
MyThread执行完毕后,主线程才继续执行System.out.println("主线程继续执行");。
其他方法:
除了 join() 方法外,还可以使用其他方法实现类似的效果:
isAlive()方法可以判断子线程是否处于活动状态,但无法阻塞主线程。sleep()方法可以使主线程休眠一段时间,但无法保证子线程执行完成。interrupt()方法可以中断子线程,但无法保证子线程立即停止执行。
总结:
join() 方法是让主线程等待子线程执行完成的最佳选择,因为它能够保证子线程执行完毕后,主线程才能继续执行。
原文地址: https://www.cveoy.top/t/topic/oz0K 著作权归作者所有。请勿转载和采集!