用java实现异步转同步
时间: 2023-12-14 13:37:05 浏览: 85
异步转同步实例
在 Java 中,可以使用 CountDownLatch 类来实现异步转同步。CountDownLatch 是一个同步工具类,可以让某个线程等待其他线程完成操作后再执行。
具体实现步骤如下:
1. 创建一个 CountDownLatch 对象,指定计数器的初始值为 1。
2. 在异步执行的线程中调用 CountDownLatch 的 countDown() 方法,将计数器减一。
3. 在需要等待异步执行结果的线程中调用 CountDownLatch 的 await() 方法,等待计数器归零。
以下是示例代码:
```java
import java.util.concurrent.CountDownLatch;
public class AsyncToSync {
public static void main(String[] args) throws InterruptedException {
CountDownLatch latch = new CountDownLatch(1);
// 异步执行任务
new Thread(() -> {
try {
Thread.sleep(3000);
System.out.println("异步任务执行完毕");
latch.countDown(); // 计数器减一
} catch (InterruptedException e) {
e.printStackTrace();
}
}).start();
System.out.println("等待异步任务执行结果...");
latch.await(); // 等待计数器归零
System.out.println("异步任务执行结果已经得到");
}
}
```
在上面的代码中,我们创建了一个计数器初始值为 1 的 CountDownLatch 对象。在异步执行的线程中,等待 3 秒后调用 countDown() 方法将计数器减一。在需要等待异步执行结果的线程中,调用 await() 方法等待计数器归零。当计数器归零后,程序会输出“异步任务执行结果已经得到”。
阅读全文