java等子线程执行结束后再执行main线程
时间: 2023-07-06 22:04:25 浏览: 46
在Java中,可以使用join()方法来实现子线程的等待。join()方法的作用是让当前线程等待调用join()方法的线程执行完毕后再继续执行。
例如,如果有一个子线程t1,我们希望在主线程中等待t1执行完毕后再继续执行,可以这样写:
```
Thread t1 = new Thread(new Runnable() {
@Override
public void run() {
// 子线程的代码
}
});
t1.start(); // 启动子线程
t1.join(); // 等待子线程执行完毕
```
这段代码会先启动子线程t1,然后在主线程中调用t1.join()方法,主线程会被阻塞,直到t1执行完毕才会继续执行。你可以把子线程的代码放在Runnable接口的run()方法中。
注意,join()方法会抛出InterruptedException异常,因此需要在调用join()方法时进行异常处理。例如:
```
try {
t1.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
```
相关问题
java在多线程中主线程等待子线程运行结束再执行的代码示例
以下是一个Java多线程中主线程等待子线程运行结束再执行的代码示例:
```
public class Main {
public static void main(String[] args) throws InterruptedException {
Thread t = new Thread(new MyRunnable());
t.start();
t.join(); // 等待子线程t执行完毕
System.out.println("主线程执行完毕");
}
}
class MyRunnable implements Runnable {
@Override
public void run() {
System.out.println("子线程开始执行");
try {
Thread.sleep(5000); // 模拟子线程执行耗时操作
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("子线程执行完毕");
}
}
```
在这个示例中,主线程创建并启动了一个子线程t,然后调用t.join()方法等待子线程t执行完毕,最后输出"主线程执行完毕"。子线程t执行了一个模拟耗时操作,然后输出"子线程执行完毕"。
java 多线程等所有线程都执行完成
使用Java实现多线程等待所有线程都执行完成可以使用Thread.join()方法。
在主线程中创建多个子线程,并调用start()方法启动它们。然后,使用一个for循环遍历线程数组,在每个线程上调用join()方法。这样,主线程将等待所有子线程执行完毕后再继续执行。
下面是一个简单的示例代码:
```java
public class MainThread {
public static void main(String[] args) {
// 创建线程数组
Thread[] threads = new Thread[5];
// 创建并启动子线程
for (int i = 0; i < threads.length; i++) {
threads[i] = new Thread(new MyRunnable());
threads[i].start();
}
// 等待所有子线程执行完成
for (Thread thread : threads) {
try {
thread.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
// 所有子线程执行完成
System.out.println("所有线程都执行完成!");
// 继续执行主线程的其他操作
// ...
}
public static class MyRunnable implements Runnable {
@Override
public void run() {
// 子线程的执行逻辑
// ...
System.out.println(Thread.currentThread().getName() + "执行完成");
}
}
}
```
这样,当所有子线程执行完成后,主线程将输出"所有线程都执行完成!",然后继续执行主线程中的其他操作。