java主线程等待子线程
时间: 2023-12-18 19:29:23 浏览: 32
Java中,主线程等待子线程可以使用CountDownLatch或者LockSupport实现。其中CountDownLatch是一个同步工具类,可以让一个或多个线程等待其他线程完成操作,而LockSupport则是一个线程阻塞工具类,可以让线程阻塞和唤醒。
使用CountDownLatch实现主线程等待子线程的示例代码如下:
```java
import java.util.concurrent.CountDownLatch;
public class Main {
public static void main(String[] args) throws InterruptedException {
CountDownLatch latch = new CountDownLatch(2); // 创建CountDownLatch对象,计数器初始值为2
new Thread(() -> {
try {
System.out.println("子线程1开始执行");
Thread.sleep(2000); // 模拟子线程1执行任务
System.out.println("子线程1执行完毕!");
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
latch.countDown(); // 计数器减1
}
}).start();
new Thread(() -> {
try {
System.out.println("子线程2开始执行");
Thread.sleep(3000); // 模拟子线程2执行任务
System.out.println("子线程2执行完毕!");
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
latch.countDown(); // 计数器减1
}
}).start();
latch.await(); // 主线程等待计数器归零
System.out.println("主线程执行!\ndo something...");
}
}
```
使用LockSupport实现主线程等待子线程的示例代码如下:
```java
import java.util.concurrent.locks.LockSupport;
public class Main {
public static void main(String[] args) {
Thread mainThread = Thread.currentThread();
new Thread(() -> {
try {
System.out.println("子线程开始执行");
Thread.sleep(2000); // 模拟子线程执行任务
System.out.println("子线程执行完毕!");
} catch (InterruptedException e) {
e.printStackTrace();
}
LockSupport.unpark(mainThread); // 唤醒主线程
}).start();
LockSupport.park(); // 主线程阻塞
System.out.println("主线程执行!\ndo something...");
}
}
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![application/x-zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)